2
特性境界を持つ汎用タイプのフィールドを持つ構造体を実装しようとしています。私はGroup.admin
の値をPrintable
とします。それは正確なタイプではありません。特性境界を持つ汎用構造体フィールド
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(),
}
}
しかし、コンパイラはこれを許可していません:
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`
私はここで間違っているかわからないんだけど。多分私はPerson::new()
の値を<T: Printable>
にキャストする必要がありますか?