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}