struct S {
    v: Option<String>,
}
fn main() {
    let v = "haha".to_owned();
    let s = &S{ v: Some(v) };
    // error[E0507]: cannot move out of `s.v` which is behind a shared reference
    if let (Some(ref v), true) = (s.v, true) { 
    }
    // ok
    if let Some(ref v) = s.v { 
    }
}
当时没明白为什么前面加了ref还会提示从引用中移出值,后来一想真正发生移动的不是在前面那个Some(ref v)那,而是在(s.v, true)这里,因为这里要构建一个tuple。
	    
	    
		1
	    
	    
	    共 2 条评论, 1 页
	
	
    
评论区
写评论这里想用自动类型推倒告诉 rustc 编译器不要 move 吗, 改成着就好了
和下面的这个问题一样的
nice