From 64e891330c08d26139b8b1b13c1bebc4e909cd13 Mon Sep 17 00:00:00 2001 From: ijl Date: Tue, 11 Feb 2020 13:51:25 +0000 Subject: [PATCH] Implement core::fmt::Write for heapless::Vec --- src/vec.rs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/vec.rs b/src/vec.rs index b3dbee7c..f8265476 100644 --- a/src/vec.rs +++ b/src/vec.rs @@ -365,6 +365,18 @@ where } } +impl fmt::Write for Vec +where + N: ArrayLength, +{ + fn write_str(&mut self, s: &str) -> fmt::Result { + match self.extend_from_slice(s.as_bytes()) { + Ok(()) => Ok(()), + Err(_) => Err(fmt::Error), + } + } +} + impl Drop for Vec where N: ArrayLength, @@ -645,6 +657,7 @@ where #[cfg(test)] mod tests { use crate::{consts::*, Vec}; + use core::fmt::Write; #[test] fn static_new() { @@ -911,4 +924,11 @@ mod tests { v.resize_default(1).unwrap(); assert_eq!(v[0], 0); } + + #[test] + fn write() { + let mut v: Vec = Vec::new(); + write!(v, "{:x}", 1234).unwrap(); + assert_eq!(&v[..], b"4d2") + } }