c3_inheritance/traits/
mod.rs

1use crate::c3::C3Class;
2
3/// A trait for objects that can be used in the C3 algorithm.
4pub trait C3Object {
5    /// Convert the object to a class.
6    fn as_class(&self) -> C3Class;
7}
8
9impl C3Object for C3Class {
10    fn as_class(&self) -> C3Class {
11        self.clone()
12    }
13}
14
15impl<'i> C3Object for &'i str {
16    fn as_class(&self) -> C3Class {
17        C3Class::new(self.to_string())
18    }
19}
20
21impl C3Object for String {
22    fn as_class(&self) -> C3Class {
23        C3Class::new(self)
24    }
25}