为什么 Rust 需要此变量的“静态”生命周期?

盖兰多 OCs

我试图理解为什么 Rust 使类型具有'static生命周期。

请看一下这段代码:

let tcp_tx_buffer = TcpSocketBuffer::new(vec![0; 128]);

VSCode 告诉我的类型tcp_tx_buffer

smoltcp::storage::RingBuffer<'static, u8>

但是,如果我们找到new 方法RingBuffer

pub fn new<S>(storage: S) -> RingBuffer<'a, T>
    where S: Into<ManagedSlice<'a, T>>,
{
    RingBuffer {
        storage: storage.into(),
        read_at: 0,
        length:  0,
    }
}

'static返回没有生命周期。事实上,生命周期与输入相同,'a如果let tcp_tx_buffer在外面main,我猜它是static,但它有自己的范围。或者 Rust 认为main有一个'static生命周期?

用户2722968

签名new说它返回一个RingBuffer带有特定生命周期的;它被定义为与作为when调用的storage一部分-parameter 返回的任何内容所携带的生命周期相同也就是说,-parameter 决定了 -value 携带的生命周期ManagedSliceInto<ManagedSlice>storageRingBuffer

您正在传递一个拥有的VecTcpSocketBuffer::new(). 一个Vec不包含引用类型的拥有者是它自己'staticTcpSocketBuffercan(由于它的实现)Into<ManagedSlice>,其中ManagedSlice包含生命周期原件Vec的生命周期'static这是'static从哪里来的。

考虑'static到这一生并不意味着价值必须永远存在,这可能会有所帮助它只是意味着该值可制成能长生不老。对于不包含自身生命周期短于 的引用的所有值都是如此'static例如, aString::new()'static因为它可以随心所欲地存活(只需不丢弃它)。AFoo<'a> { bar: &'a str }只能存活多久'a,因为它Foo包含的引用可能'static.

从创建的那一刻起,您拥有的Vec财产就可以随我们的需要而活,并且此财产将一直延续到RingBuffer

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么这个 Rust 类型别名需要生命周期参数?

来自分类Dev

为什么在这个 Rust 函数输出中需要一个明确的生命周期?

来自分类Dev

为什么 Rust 似乎忽略了我的生命周期注释?

来自分类Dev

为什么在 Rust 中 [有时] 不需要泛型的生命周期说明符?

来自分类Dev

为什么这种相互引用结构在具有指定生命周期的 Rust 中工作?

来自分类Dev

Rust 生命周期背后的直觉是什么?

来自分类Dev

为什么此Rust代码使用结构上的生存期绑定进行编译,但如果绑定仅在impl上进行编译,则给出生命周期错误呢?

来自分类Dev

为什么 Rust 中的通用生命周期参数可以专门用于一个对象的两个不相交的生命周期?

来自分类Dev

当我将值移动到衍生的 Tokio 任务时,为什么 Rust 生命周期很重要?

来自分类Dev

Rust中的生命周期注释会改变变量的生命周期吗?

来自分类Dev

在Rust中对结构使用生命周期的正确方法是什么?

来自分类Java

什么是活动之间共享一个静态变量的生命周期?

来自分类Dev

为什么递归异步函数在Rust中需要'静态参数?

来自分类Dev

为什么Rust无法识别变量是&str?

来自分类Dev

Rust 嵌套 Serde 生命周期?

来自分类Dev

Rust中功能参考的生命周期

来自分类Dev

指定Rust封闭的生命周期

来自分类Dev

线程的Rust生命周期问题

来自分类Dev

HashMap 上的 Rust 生命周期

来自分类Dev

异步流中的生命周期 (rust)

来自分类Dev

什么时候静态生命周期不合适?

来自分类Dev

为什么此函数使用通用生命周期参数进行编译?

来自分类Dev

什么时候需要使用生命周期?

来自分类Dev

为什么泛型函数不需要生命周期

来自分类Dev

为什么此代码似乎可以正确管理生命周期,但为什么涉及使用对临时段的引用呢?

来自分类Dev

为什么C ++编译器不立即删除生命周期之外的变量?

来自分类Dev

为什么变量绑定会影响循环体内的生命周期?

来自分类Dev

SwiftUI中@State变量的生命周期是什么?

来自分类Dev

如何在Rust中创建具有需要生命周期特征的泛型函数?

Related 相关文章

  1. 1

    为什么这个 Rust 类型别名需要生命周期参数?

  2. 2

    为什么在这个 Rust 函数输出中需要一个明确的生命周期?

  3. 3

    为什么 Rust 似乎忽略了我的生命周期注释?

  4. 4

    为什么在 Rust 中 [有时] 不需要泛型的生命周期说明符?

  5. 5

    为什么这种相互引用结构在具有指定生命周期的 Rust 中工作?

  6. 6

    Rust 生命周期背后的直觉是什么?

  7. 7

    为什么此Rust代码使用结构上的生存期绑定进行编译,但如果绑定仅在impl上进行编译,则给出生命周期错误呢?

  8. 8

    为什么 Rust 中的通用生命周期参数可以专门用于一个对象的两个不相交的生命周期?

  9. 9

    当我将值移动到衍生的 Tokio 任务时,为什么 Rust 生命周期很重要?

  10. 10

    Rust中的生命周期注释会改变变量的生命周期吗?

  11. 11

    在Rust中对结构使用生命周期的正确方法是什么?

  12. 12

    什么是活动之间共享一个静态变量的生命周期?

  13. 13

    为什么递归异步函数在Rust中需要'静态参数?

  14. 14

    为什么Rust无法识别变量是&str?

  15. 15

    Rust 嵌套 Serde 生命周期?

  16. 16

    Rust中功能参考的生命周期

  17. 17

    指定Rust封闭的生命周期

  18. 18

    线程的Rust生命周期问题

  19. 19

    HashMap 上的 Rust 生命周期

  20. 20

    异步流中的生命周期 (rust)

  21. 21

    什么时候静态生命周期不合适?

  22. 22

    为什么此函数使用通用生命周期参数进行编译?

  23. 23

    什么时候需要使用生命周期?

  24. 24

    为什么泛型函数不需要生命周期

  25. 25

    为什么此代码似乎可以正确管理生命周期,但为什么涉及使用对临时段的引用呢?

  26. 26

    为什么C ++编译器不立即删除生命周期之外的变量?

  27. 27

    为什么变量绑定会影响循环体内的生命周期?

  28. 28

    SwiftUI中@State变量的生命周期是什么?

  29. 29

    如何在Rust中创建具有需要生命周期特征的泛型函数?

热门标签

归档