Ich versuche, eine Struktur mit einem Feld des generischen Typs zu implementieren, das Merkmalsbegrenzungen hat. Ich möchte einen Wert von Group.admin
zu Printable
haben. Es ist egal, was genau es ist.Generisches Strukturfeld mit Merkmalsgrenzen
struct Group<T: Printable> {
admin: T,
}
struct Person {
name: String,
}
impl Person {
fn new() -> Person {
Person {
name: String::from("Bob"),
}
}
}
trait Printable {
fn print(&self);
}
impl Printable for Person {
fn print(&self) {
println!("{}", self.name);
}
}
fn group_test<T: Printable>() -> Group<T> {
Group {
admin: Person::new(),
}
}
Aber der Compiler erlaubt es nicht, diese:
error[E0308]: mismatched types
--> src/lib.rs:27:16
|
27 | admin: Person::new(),
| ^^^^^^^^^^^^^ expected type parameter, found struct `Person`
|
= note: expected type `T`
found type `Person`
Ich bin mir nicht sicher, was hier los ist. Vielleicht muss ich den Wert von Person::new()
zu <T: Printable>
irgendwie?