diff options
Diffstat (limited to 'src/annotation')
-rw-r--r-- | src/annotation/mod.rs | 36 |
1 files changed, 23 insertions, 13 deletions
diff --git a/src/annotation/mod.rs b/src/annotation/mod.rs index 0d1f1f8..9edf262 100644 --- a/src/annotation/mod.rs +++ b/src/annotation/mod.rs @@ -94,24 +94,34 @@ impl<T> DescriptionSink<T> for NullSink { fn record(&mut self, _start: u32, _end: u32, _description: T) { } } -#[cfg(feature = "std")] -pub struct VecSink<T: Clone + Display> { - pub records: std::vec::Vec<(u32, u32, T)> -} +#[cfg(feature = "alloc")] +mod vec_sink { + use alloc::vec::Vec; + use core::fmt::Display; + use crate::annotation::DescriptionSink; -#[cfg(feature = "std")] -impl<T: Clone + Display> VecSink<T> { - pub fn new() -> Self { - VecSink { records: std::vec::Vec::new() } + pub struct VecSink<T: Clone + Display> { + pub records: Vec<(u32, u32, T)> + } + + impl<T: Clone + Display> VecSink<T> { + pub fn new() -> Self { + VecSink { records: Vec::new() } + } + + pub fn into_inner(self) -> Vec<(u32, u32, T)> { + self.records + } } -} -#[cfg(feature = "std")] -impl<T: Clone + Display> DescriptionSink<T> for VecSink<T> { - fn record(&mut self, start: u32, end: u32, description: T) { - self.records.push((start, end, description)); + impl<T: Clone + Display> DescriptionSink<T> for VecSink<T> { + fn record(&mut self, start: u32, end: u32, description: T) { + self.records.push((start, end, description)); + } } } +#[cfg(feature = "alloc")] +pub use vec_sink::VecSink; pub trait FieldDescription { fn id(&self) -> u32; |