1
在以下示例中,編譯了t1
,但t2
沒有編譯。爲什麼`&mut&foo`有效,但'&mut a_ref_to_foo`無效?
&mut &stream
有什麼特別的嗎?我不認爲Deref
踢
use std::net::TcpStream;
fn t1() {
let stream = TcpStream::connect("127.0.0.1").unwrap();
let a = &mut &stream;
}
fn t2(stream: &TcpStream) {
let a = &mut stream;
}
9 | fn t2(stream: &TcpStream) {
| ------ use `mut stream` here to make mutable
10 | let a = &mut stream;
| ^^^^^^ cannot borrow mutably
'let a_ref_to_foo = &foo;'應爲'let mut a_ref_to_foo = &foo;'。建議的編輯被拒絕。 – red75prime
@ red75prime no。第二個例子旨在反映OP案例。添加一個'mut'將會使代碼編譯,否定整個例子。據推測,OP已經知道如何解決這個問題(編譯器的錯誤信息同樣多)並詢問有什麼不同。 – Shepmaster
啊,我在題目中錯過了'&mut a_ref_to_foo'。問題中的代碼沒有包含它,所以我決定引入它來解釋臨時值是如何工作的。我很抱歉誤會。 – red75prime