Warum kann ich einen Wert und eine Referenz auf diesen Wert nicht in derselben Struktur speichern?

Ich habe einen Wert und möchte diesen Wert und einen Verweis auf etwas in diesem Wert in meinem eigenen Typ speichern:

struct Thing {
    count: u32,
}

struct Combined<'a>(Thing, &'a u32);

fn make_combined<'a>() -> Combined<'a> {
    let thing = Thing { count: 42 };

    Combined(thing, &thing.count)
}

anchmal habe ich einen Wert und möchte diesen Wert und eine Referenz auf diesen Wert in derselben Struktur speichern:

struct Combined<'a>(Thing, &'a Thing);

fn make_combined<'a>() -> Combined<'a> {
    let thing = Thing::new();

    Combined(thing, &thing)
}

Manchmal nehme ich nicht einmal einen Verweis auf den Wert und erhalte den gleichen Fehler:

struct Combined<'a>(Parent, Child<'a>);

fn make_combined<'a>() -> Combined<'a> {
    let parent = Parent::new();
    let child = parent.child();

    Combined(parent, child)
}

In jedem dieser Fälle erhalte ich die Fehlermeldung, dass einer der Werte "nicht lange genug lebt". Was bedeutet dieser Fehler?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage