Warum kann ich nicht speichern Sie einen Wert und eine Referenz auf den Wert in der gleichen Struktur?

Ich habe einen Wert und ich möchte speichern, dass Wert und eine Referenz auf
etwas im inneren, dass Wert auf meine eigene Art:

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)
}

Manchmal, ich habe einen Wert und ich möchte speichern, dass Wert und eine Referenz auf
diesen Wert in der gleichen Struktur:

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

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

    Combined(thing, &thing)
}

Manchmal bin ich auch nicht nehmen, eine Referenz für den Wert und bekomme ich die
gleicher 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, bekomme ich eine Fehlermeldung, dass einer der Werte "hat
nicht lange genug Leben". Was hat dieser Fehler zu bedeuten?

  • Für die Letztgenannte Beispiel, eine definition der Parent und Child helfen könnte...
  • Ich habe überlegt, dass, entschied sich dann aber dagegen basiert auf zwei miteinander verknüpften Fragen. Weder die Fragen angeschaut die definition der Struktur oder die Methode in Frage, so dachte ich, es wäre am besten zu imitieren, um die Menschen können leichter mit dieser Frage an Ihre eigene situation. Beachten Sie, dass ich zeigen die Signatur der Methode in der Antwort.
InformationsquelleAutor Shepmaster | 2015-08-30
Schreibe einen Kommentar