Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- trait Trait1 {
- fn is_id(&self, id: usize) -> bool;
- }
- trait Trait2{}
- struct Core {
- objs: Vec<obj1>,
- diff_objs: Vec<obj2>,
- }
- struct obj1 {
- stuff: String,
- id: usize,
- }
- impl Trait1 for obj1 {
- fn is_id(&self, id: usize) -> bool { self.id == id }
- }
- impl Trait2 for obj1 {}
- struct obj2 {
- other_stuff: String,
- id: usize,
- }
- impl Trait1 for obj2 {
- fn is_id(&self, id: usize) -> bool { self.id == id }
- }
- impl Trait2 for obj2 {}
- // This could live in impl Core maybe?
- fn return_trait<T: Trait1 + Trait2>(core: &Core, id: usize) -> Result<T, String> {
- for obj in core.objs.iter() {
- if obj.is_id(id) { return Ok(obj); }
- }
- for obj in core.diff_objs.iter() {
- if obj.is_id(id) { return Ok(obj); }
- }
- Err("Couldn't find ID".to_string())
- }
- fn main() {
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement