dst_container/
unsized_str.rs

1use crate::*;
2
3#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash, MaybeUninitProject, UnsizedClone)]
4#[repr(C)]
5/// Represents a [`Sized`] header and an unsized [`str`].
6pub struct UnsizedStr<H> {
7    /// The header.
8    pub header: H,
9    /// The unsized [`str`].
10    pub str: str,
11}
12
13#[cfg(test)]
14mod test {
15    use crate::*;
16
17    #[test]
18    fn new_box() {
19        let b = unsafe {
20            Box::<UnsizedStr<u32>>::new_unsized_with(5, |slice| {
21                slice.header.write(114514);
22                slice.str.write_copy_of_slice(b"Hello");
23            })
24        };
25
26        assert_eq!(b.header, 114514);
27        assert_eq!(&b.str, "Hello");
28    }
29}