use alloc::{string::String, vec::Vec};
use crate::{FixedArray, FixedString, ValidLength};
mod sealed {
    use alloc::{string::String, vec::Vec};
    pub trait Sealed {}
    impl Sealed for String {}
    impl<T> Sealed for Vec<T> {}
}
pub trait TruncatingInto<T>: sealed::Sealed {
    fn trunc_into(self) -> T;
}
impl<LenT: ValidLength> TruncatingInto<FixedString<LenT>> for String {
    fn trunc_into(self) -> FixedString<LenT> {
        FixedString::from_string_trunc(self)
    }
}
impl<T, LenT: ValidLength> TruncatingInto<FixedArray<T, LenT>> for Vec<T> {
    fn trunc_into(self) -> FixedArray<T, LenT> {
        FixedArray::from_vec_trunc(self)
    }
}