【rust】Clone与Drop用法
Clone与Drop用法
#[derive(Debug)]
struct Chunk {
id: u32,
}
impl Clone for Chunk {
fn clone(&self) -> Self {
println!("调用 Chunk::clone(), id = {}", self.id);
Chunk {
id: self.id,
}
}
}
impl Drop for Chunk {
fn drop(&mut self) {
println!("调用 Chunk::drop(), id = {}", self.id);
}
}
fn main() {
println!("--- 创建 chunk1 ---");
let chunk1 = Chunk { id: 100 };
println!("--- clone chunk1 ---");
let chunk2 = chunk1.clone();
println!("chunk1 = {:?}", chunk1);
println!("chunk2 = {:?}", chunk2);
println!("--- main 即将结束 ---");
}
运行过程大概是:
--- 创建 chunk1 ---
--- clone chunk1 ---
调用 Chunk::clone(), id = 100
chunk1 = Chunk { id: 100 }
chunk2 = Chunk { id: 100 }
--- main 即将结束 ---
调用 Chunk::drop(), id = 100
调用 Chunk::drop(), id = 100

浙公网安备 33010602011771号