Skip to content

Support overriding methods #67

@ChrisMGeo

Description

@ChrisMGeo

How would I prevent Delegate from delegating every method in a trait, so I can override some.

use ambassador::{delegatable_trait, Delegate};

#[delegatable_trait]
trait SomeTrait {
    fn get_val(&self) -> f64;
    fn some_other_thing(&self) {}
}
struct SomeTraitImpl;
impl SomeTrait for SomeTraitImpl {
    fn get_val(&self) -> f64 {
        0.0
    }
}
#[derive(Delegate)]
#[delegate(SomeTrait, target = "owned")]
struct SomeTraitImplOwner {
    owned: SomeTraitImpl,
}
impl SomeTraitImplOwner {
    fn get_val(&self) -> f64 {
        self.owned.get_val() + 1.0
    }
}
impl SomeTrait for SomeTraitImplOwner { // <- Error here
    fn get_val(&self) -> f64 {
        SomeTraitImplOwner::get_val(self)
    }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions