Folgendes wird nicht kompilieren:Warum wird eine Lebensdauer für eine Struktur verwendet, auf die ich einen Verweis habe?
struct Person<'z> {
street_address: String,
postcode: String,
city: String,
company_name: String,
position: String,
annual_income: usize,
}
struct PersonBuilder<'z> {
person: &'z Person<'z>,
}
impl<'z> PersonBuilder<'z> {
fn new() -> PersonBuilder<'z> {
PersonBuilder {
person: Person {
street_address: "".to_string(),
postcode: "".to_string(),
city: "".to_string(),
company_name: "".to_string(),
position: "".to_string(),
annual_income: 0,
},
}
}
}
error[E0392]: parameter `'z` is never used
--> src/main.rs:1:15
|
1 | struct Person<'z> {
| ^^ unused type parameter
|
= help: consider removing `'z` or using a marker such as `std::marker::PhantomData`
Aber das ist nicht wahr, oder? Ich meine, PersonBuilder
hält einen Verweis auf eine Person als Person<'z>
und wenn ich es mit PersonBuilder::new()
instanziieren, ist eindeutig der Typ Parameter im Spiel, um die beiden Lebenszeiten zusammen zu binden. Also, was ist hier los?
Ich sehe keine tatsächliche Nutzung von ' 'Z' Lebensdauer für' Person'; nichts Seltsames hier. – ljedrz
Warum verwenden Sie nicht 'String :: new()' anstelle von '" ".to_string()'? – Boiethios
Außerdem sollten Sie 'to_owned' anstelle von' to_string' verwenden, um & str in String zu konvertieren. –