[英]How to use a void* in C++ to hold the value of an uint32_t when the pointer is passed as a reference to a method
[英]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>
,它将在该范围的末尾被销毁,并使引用无效。
如果您要改为创建仅引用float
的Option<&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.