问题描述
我有一些 flatbuffers IDL:
table Filter {
text: string (required);
}
生成以下 .rs:
...
pub struct Filter<'a> {
pub _tab: flatbuffers::Table<'a>,}
...
我正在尝试为其添加一些特征实现:
pub trait TFilter {
fn as_any(&self) -> &dyn Any;
fn as_any_mut(&mut self) -> &mut dyn Any;
}
...
impl TFilter for crate::schema_generated::Filter<'_> {
fn as_any(&self) -> &dyn Any { self }
fn as_any_mut(&mut self) -> &mut dyn Any { self }
}
我得到以下信息:
cannot infer an appropriate lifetime due to conflicting requirements
note: ...so that the type `schema_generated::Filter<'_>` will meet its required lifetime bounds
note: but,the lifetime must be valid for the static lifetime...
note: ...so that the expression is assignable
如果我添加生命周期:
// flatbuffers-based impl
impl<'a> TFilter for crate::schema_generated::Filter<'a> {
fn as_any(&self) -> &'a dyn Any { self }
fn as_any_mut(&mut self) -> &'a mut dyn Any { self }
}
我得到以下信息:
the type `schema_generated::Filter<'a>` does not fulfill the required lifetime
note: type must satisfy the static lifetimerustc(E0477)
我不确定我是否理解这个意思。
如果我理解正确,我需要标记 as_any
的寿命不超过 crate::schema_generated::Filter
,对吗?
有什么线索吗? 'static
要求从何而来?
附注。我找到了 following,但我不确定它是否相关。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)