Pull to refresh
0
0
Send message
Пример с владением в разных областях описан неверно. В вашем случае inner scope вообще не нужен и по сути это и будет dbg! — так как этот макрос завладевает переданной переменной.

```
let a = String::from(«foo»);
dbg!(a); // это inner scope по отношению к main
dbg!(a); // это тоже inner scope по отношению к main
```
Данный код вызовет ошибку, потому что inner scope вернул память системе
```
let a = String::from(«foo»);
a = dbg!(a);
dbg!(a);
```
Этот код не выозвет ошибку, т.к. inner scope вернул память main scope.

```
let a = String::from(«foo»);
{ // inner scope
let b = String::from(«bar»);
println!(«Я не владею {}», a);
println!(«Зато владею {}», b);
}
dbg!(a);
dbg!(b);
```
Этот код приведет к ошибке владения b, но не как не a. Т.к. inner scope не владеет а. А b как раз создана во владениях inner scope и буде тудалена когда inner scope закончится (на символе })

Information

Rating
Does not participate
Registered
Activity