write_fonts/
collections.rs1use std::collections::BTreeSet;
4
5use crate::{NullableOffsetMarker, OffsetMarker};
6
7pub trait HasLen {
10 fn len(&self) -> usize;
11}
12
13impl<T> HasLen for [T] {
14 fn len(&self) -> usize {
15 self.len()
16 }
17}
18
19impl<T> HasLen for BTreeSet<T> {
20 fn len(&self) -> usize {
21 self.len()
22 }
23}
24
25impl<T> HasLen for Vec<T> {
26 fn len(&self) -> usize {
27 self.len()
28 }
29}
30
31impl<T: HasLen> HasLen for Option<T> {
32 fn len(&self) -> usize {
33 match &self {
34 Some(t) => t.len(),
35 None => 0,
36 }
37 }
38}
39
40impl<T: HasLen, const N: usize> HasLen for OffsetMarker<T, N> {
41 fn len(&self) -> usize {
42 T::len(self)
43 }
44}
45
46impl<T: HasLen, const N: usize> HasLen for NullableOffsetMarker<T, N> {
47 fn len(&self) -> usize {
48 self.as_ref().map(HasLen::len).unwrap_or(0)
49 }
50}