У меня в основном есть функция, которая создает некоторый объект, который нужно выделить в куче. То, что я хочу сделать, это вернуть из этой функции структуру, содержащую ссылку на это значение, выделенное кучей.Как я могу вернуть значение в штучной упаковке?
struct Cont<'a> {
pub v: &'a i32
}
impl<'a> Cont<'a> {
fn new(v: &'a i32) -> Cont {
Cont {
v: v
}
}
}
fn f<'a>() -> Cont<'a> {
let v = Box::new(6);
Cont::new(&v)
}
fn main() {
let c = f();
println!("{}", c.v);
}
Я получаю error: 'v' does not live long enough
.
Вы можете найти пример here.
Что делать, если я хочу использовать ссылки в 'struct'? – dragostis
Вы имеете в виду, что иногда вы хотите, чтобы структура просто заимствовала значение, а иногда и владела значением? –
Я не хочу заимствовать. У меня может быть некоторое '& value', созданное в функции, и некоторые' Cont 'создаются и используются впоследствии, не возвращая ни одного из них или фактически передавая их дальше. Итак, '& value' будет иметь смысл, потому что я не хочу выделять это в куче. Есть ли способ использовать либо «Коробку», либо «Ref»? – dragostis