RUST_CODE Telegram 920
ЗАДАЧА : Что выведет этот код?


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 A
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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍182🥰2🤔2🖕2



tgoop.com/rust_code/920
Create:
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 A
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

BY Rust


Share with your friend now:
tgoop.com/rust_code/920

View MORE
Open in Telegram


Telegram News

Date: |

Activate up to 20 bots So far, more than a dozen different members have contributed to the group, posting voice notes of themselves screaming, yelling, groaning, and wailing in various pitches and rhythms. Select: Settings – Manage Channel – Administrators – Add administrator. From your list of subscribers, select the correct user. A new window will appear on the screen. Check the rights you’re willing to give to your administrator. Polls
from us


Telegram Rust
FROM American