mod3d_gltf/traits.rs
1pub trait Named: Sized {
2 type Index: Sized + From<usize>;
3 fn is_name(&self, name: &str) -> bool;
4 fn get_named(s: &[Self], name: &str) -> Option<Self::Index> {
5 for (i, sn) in s.iter().enumerate() {
6 if sn.is_name(name) {
7 return Some(i.into());
8 }
9 }
10 if let Ok(n) = str::parse::<usize>(name) {
11 if n < s.len() {
12 return Some(n.into());
13 }
14 }
15 None
16 }
17}