rust - How to call a trait method without a struct instance? -
if have struct method doesn't have self
argument, can call method via somestruct::method()
. can't seem same method that's defined trait. example:
trait sometrait { fn one_trait() -> uint; } struct somestruct; impl somestruct { fn one_notrait() -> uint { 1u } } impl sometrait somestruct { fn one_trait() -> uint { 1u } } #[test] fn testing() { somestruct::one_trait(); // doesn't compile somestruct::one_notrait(); // compiles }
the compiler gives error "unresolved name 'somestruct::one_trait.'"
how can call struct's implementation of trait method directly?
i believe not possible. problem cannot explicitly specify self
type. there active rfc in pipeline should allow when implemented.
in meantime, work around this:
trait sometrait { fn one_trait(&self) -> uint; } struct static<t>; struct somestruct; impl sometrait static<somestruct> { fn one_trait(&self) -> uint { 1 } } fn main() { let type_to_uint = static::<somestruct>.one_trait(); println!("{}", type_to_uint); }
this how map type integer (if that's you're after). it's done without having value of type t
. dummy value, static<t>
, has size of zero.
Comments
Post a Comment