att 0.2.1

Bluetooth Attribute Protocol Server
Documentation
use crate::{Handle, Uuid};

pub(crate) trait Size {
    fn size(&self) -> usize;
}

impl Size for Handle {
    fn size(&self) -> usize {
        2
    }
}

impl Size for Uuid {
    fn size(&self) -> usize {
        match self {
            Self::Uuid16(_) => 2,
            Self::Uuid128(_) => 16,
        }
    }
}

impl Size for Box<[u8]> {
    fn size(&self) -> usize {
        self.len()
    }
}

impl<E1, E2> Size for (E1, E2)
where
    E1: Size,
    E2: Size,
{
    fn size(&self) -> usize {
        self.0.size() + self.1.size()
    }
}

impl<E1, E2, E3> Size for (E1, E2, E3)
where
    E1: Size,
    E2: Size,
    E3: Size,
{
    fn size(&self) -> usize {
        self.0.size() + self.1.size() + self.2.size()
    }
}