繁体   English   中英

Rust - 如何在 Option 中引用 T 值<T>

[英]Rust - How to reference T value inside Option<T>

fn main() {
    let float = 1.0;

    let var: &f64 =  {
        let inner_option = Some(float);

        inner_option.as_ref().unwrap()
    };

    dbg!(var);
}

你得到这个错误

error[E0597]: `inner_option` does not live long enough
 --> src/main.rs:7:9
  |
4 |     let var: &f64 =  {
  |         --- borrow later stored here
...
7 |         inner_option.as_ref().unwrap()
  |         ^^^^^^^^^^^^^^^^^^^^^ borrowed value does not live long enough
8 |     };
  |     - `inner_option` dropped here while still borrowed


从 Option inner_option访问时,如何获取对寿命更长的float变量的引用?

调用Some(float)复制float ,生成一个Option<f64> ,它将在该范围的末尾被销毁,并使引用无效。

如果您要改为创建仅引用floatOption<&f64> ,那么它将起作用:

fn main() {
    let float = 1.0;

    let var: &f64 =  {
        let inner_option = Some(&float);

        inner_option.unwrap()
    };

    dbg!(var);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM