Skip to content

Commit 64e8913

Browse files
committed
Implement core::fmt::Write for heapless::Vec<u8, N>
1 parent 1d6c207 commit 64e8913

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

src/vec.rs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -365,6 +365,18 @@ where
365365
}
366366
}
367367

368+
impl<N> fmt::Write for Vec<u8, N>
369+
where
370+
N: ArrayLength<u8>,
371+
{
372+
fn write_str(&mut self, s: &str) -> fmt::Result {
373+
match self.extend_from_slice(s.as_bytes()) {
374+
Ok(()) => Ok(()),
375+
Err(_) => Err(fmt::Error),
376+
}
377+
}
378+
}
379+
368380
impl<T, N> Drop for Vec<T, N>
369381
where
370382
N: ArrayLength<T>,
@@ -645,6 +657,7 @@ where
645657
#[cfg(test)]
646658
mod tests {
647659
use crate::{consts::*, Vec};
660+
use core::fmt::Write;
648661

649662
#[test]
650663
fn static_new() {
@@ -911,4 +924,11 @@ mod tests {
911924
v.resize_default(1).unwrap();
912925
assert_eq!(v[0], 0);
913926
}
927+
928+
#[test]
929+
fn write() {
930+
let mut v: Vec<u8, U4> = Vec::new();
931+
write!(v, "{:x}", 1234).unwrap();
932+
assert_eq!(&v[..], b"4d2")
933+
}
914934
}

0 commit comments

Comments
 (0)