On Sat, Feb 8, 2014 at 1:21 PM, Philippe Delrieu
<[email protected]>wrote:
> pub trait Base {
> fn do_base(&self);
> }
>
> struct TestBase;
>
> impl Base for TestBase {
> fn do_base(&self) {
> println!("ici");
> }
> }
>
> trait GenerciFn {
> fn do_generic<T: Base>(&self, base: &T);
> }
>
> struct DoGenericFn;
>
> impl GenerciFn for DoGenericFn {
> fn do_generic<T: Base>(&self, base: &T) {
> base.do_base();
> }
> }
>
> struct ToTestStr {
> vec_gen: ~[~TestBase],
> }
>
> impl ToTestStr {
> fn testgencall<T: GenerciFn>(&self, gen: &T) {
> for base in self.vec_gen.iter() {
> //let test = base as &~TestBase;
> gen.do_generic(&**base);
> }
> }
> }
>
> #[main]
> fn main() {
> let base = TestBase;
> let test = ToTestStr {vec_gen: ~[~base],};
> let gen = DoGenericFn;
> test.testgencall(&gen);
>
It took me a few attempts to get the for loop right, but here you go.
pub trait Base {
fn do_base(&self);
}
struct TestBase;
impl Base for TestBase {
fn do_base(&self) {
println!("ici");
}
}
trait GenericFn {
fn do_generic(&self, base: &Base);
}
struct DoGenericFn;
impl GenericFn for DoGenericFn {
fn do_generic(&self, base: &Base) {
base.do_base();
}
}
struct ToTestStr {
vec_gen: ~[~Base],
}
impl ToTestStr {
fn testgencall<T: GenericFn>(&self, gen: &T) {
for ref base in self.vec_gen.iter() {
gen.do_generic(**base);
}
}
}
#[main]
fn main() {
let testbase = TestBase;
let test = ToTestStr {vec_gen: ~[~testbase as ~Base],};
let gen = DoGenericFn;
test.testgencall(&gen);
}
_______________________________________________
Rust-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/rust-dev