【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

 

posted @ 2026-09-14 17:45  苏格拉底的落泪  阅读(7)  评论(0)    收藏  举报