tg-me.com/rust_code/920
Create:
Last Update:
Last Update:
use std::mem;
struct Tracer(&'static str);
impl Tracer {
fn new(name: &'static str) -> Tracer {
println!("Creating {}", name);
Tracer(name)
}
}
impl Drop for Tracer {
fn drop(&mut self) {
println!("Dropping {}", self.0);
}
}
struct Test {
a: Tracer,
b: Tracer,
}
fn main() {
let mut t = Test {
a: Tracer::new("A"),
b: Tracer::new("B"),
};
mem::replace(&mut t.a, Tracer::new("X"));
println!("Midpoint");
}
✅ ОТВЕТ:
Creating B
Creating X
Dropping A
Midpoint
Dropping B
Dropping X
```
1. Создание:
Tracer::new("A") → Creating A
2. mem::replace(...):
Creating X
Dropping A
3.
println!("Midpoint")
Midpoint
4. Drop поля:
B
X
Этот код демонстрирует поведение Drop при замене полей структуры в Rust через std::mem::replace.
@rust_code