области видимости? Где-то про это есть упоминание в описании языка?
{
let x = &MyStruct2 { v: 123 };
println!("v={}", x.v)
}
а владелец чего? вы же заимствуете ссылку просто
А что вас смущает? вы создали MyStruct2, при выходе за скоуп этот объект дропнется, вы передали ссылку на этот объект в x, из x взяли v, но не во владение же
> Где-то про это есть упоминание в описании языка? https://doc.rust-lang.org/reference/expressions.html#temporaries + https://doc.rust-lang.org/reference/destructors.html#temporary-lifetime-extension - это, наверное
Теоретически, он мог дропнуться и по окончании выражения, не доходя до println!.
меня больше удивляет когда это не срабатывает, и копилятор пишет "разделите выражение на насколько частей". Типа он достаточно умный чтобы видеть решение, но сам почему-то не создает временных переменных
Это вероятное решение. Да и код исправлять это к какому-нибудь автофиксу, а не компилятору
но случай практически тот же что и в примере из начала обсуждения
Обсуждают сегодня