АМ
Size: a a a
АМ
r
T::foo(s)
то на самом деле я хочу обратиться к S::foo(s)
, поскольку s
это инстанс S
и в S
описана реализация?T::foo
без S
не имеет смысла. Какой-то тип должен реализовывать трейт, чтобы функцию трейта можно было вызвать.SL
a
struct Foo {}типа того
trait T {}
impl T for Foo {}
fn main() {
let f = Foo{};
let t = Box::new(f as dyn T);
}
MB
Box::new(f) as Box<dyn T>
MB
a
MB
a
MB
a
vec![Box::new(self.foo.unwrap()) as Box<dyn T<dyn Any>>]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `T<(dyn std::any::Any + 'static)>` is not implemented for `std::sync::Arc<Foo>`
/
-> impl T
в качестве результата?a
-> impl T
в качестве результата?a
a
pub fn get_(&self) -> Vec<Box<dyn T<dyn Any>>> {
vec![
Box::new(self.foo.unwrap()) as Box<dyn T<dyn Any>>,
Box::new(self.bar.unwrap()) as Box<dyn T<dyn Any>>,
]
}
a
the trait `T<(dyn std::any::Any + 'static)>` is not implemented for `std::sync::Arc<Foo>
the trait `T<(dyn std::any::Any + 'static)>` is not implemented for `std::sync::Arc<Bar>
/
a
#[async_trait]
pub trait T<G> {
async fn process(&self, updates: &G) -> Result<usize>;
}