![](/img/trans.png)
[英]Perl: what happens when we assign a constant value to a reference variable instead of address of a variable?
[英]What happens when I call std::mem::drop with a reference instead of an owned value?
fn main() {
let k = "fire";
drop(k);
println!("{:?}", k);
}
為什么我刪除后仍然可以使用k
? drop
不會自動取消引用嗎? 如果是,那為什么? &str
的Drop
實現是什么樣的?
當我使用引用調用
std::mem::drop
時會發生什么
引用本身被刪除。
引用而不是擁有的值
引用是一個值。
為什么我刪除后仍然可以使用
k
?
因為不可變指針實現了Copy
。 您傳入引用的副本,然后將其刪除。
drop
不會自動取消引用嗎?
不,不是的。
&str
的Drop
實現是什么樣的?
沒有任何類型的參考,不可變或可變的,所以它實際上是1 :
impl Drop for &str {
fn drop(&mut self) {}
}
也可以看看:
1 — 正如Peter Hall 所指出的,擁有空Drop
實現和沒有用戶提供的Drop
實現之間存在差異,但就本問題而言,它們是相同的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.