微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Rust 中 flatbuffers 表的“类型不满足所需的生命周期”

如何解决Rust 中 flatbuffers 表的“类型不满足所需的生命周期”

我有一些 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 举报,一经查实,本站将立刻删除。