// careful: do not combine downcast_sync! with downcast::Any, you will get `size not known at compile time` errors use downcast::{downcast_sync, AnySync}; use std::sync::Arc;
/* Trait */
trait Service: AnySync { fn what_am_i(&self);
}
downcast_sync!(dyn Service);
/* Impl */
struct Database {}
impl Service for Database { fn what_am_i(&self){
println!("I'm a database!");
}
}
impl Database { fn purge_data(&self) {
println!("Database has been purged! Goodbye, data!")
}
}
fn main(){ let service: Arc<dyn Service> = Arc::new(Database{});
service.what_am_i();
{ let db = service.downcast_ref::<Database>().unwrap();
db.purge_data();
} let db: Arc<Database> = service.downcast_arc::<Database>().ok().unwrap();
db.purge_data();
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.