АМ
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>;
}