minicbor_adapters/heapless/
writers.rs1use heapless::{LenType, vec::VecInner, vec::VecStorage};
4
5#[derive(Debug)]
19pub struct WriteToHeapless<'a, LenT: LenType, S: VecStorage<u8> + ?Sized>(
20 pub &'a mut VecInner<u8, LenT, S>,
21);
22
23impl<LenT: LenType, S: VecStorage<u8> + ?Sized> minicbor::encode::Write
24 for WriteToHeapless<'_, LenT, S>
25{
26 type Error = heapless::CapacityError;
27
28 fn write_all(&mut self, buf: &[u8]) -> Result<(), Self::Error> {
29 self.0.extend_from_slice(buf)
30 }
31}
32
33#[cfg(test)]
34#[test]
35fn test_write_vecview() {
36 let mut buf = heapless::Vec::<u8, 32>::new();
37 let buf = buf.as_mut_view();
38 minicbor::encode([1, 2, 3], WriteToHeapless(buf)).unwrap();
39 assert_eq!(&[0x83, 1, 2, 3], buf.as_slice());
40}
41
42#[cfg(test)]
44#[test]
45fn test_write_error() {
46 extern crate std;
47 use std::format;
48
49 let mut buf = heapless::Vec::<u8, 3>::new();
50 let err = minicbor::encode([1, 2, 3], WriteToHeapless(&mut buf)).unwrap_err();
51 assert_eq!(format!("{err}"), "write error: insufficient capacity");
53}