diff --git a/src/decoder_result.rs b/src/decoder_result.rs index 0af46a6..e7cf526 100644 --- a/src/decoder_result.rs +++ b/src/decoder_result.rs @@ -1,4 +1,5 @@ use crate::rate::DecoderWork; +use std::mem::take; // ====================================================================== // DecoderResult - PUBLIC @@ -27,6 +28,15 @@ impl<'a> DecoderResult<'a> { pub fn restored_original_iter(&self) -> RestoredOriginal { RestoredOriginal::new(self.work) } + + /// Returns inner Vec + pub fn into_inner_vec(self) -> Vec { + let data = take(&mut self.work.shards.data); + //TODO: truncate + //data.truncate(self. + self.work.reset_received(); + data + } } // ====================================================================== diff --git a/src/engine/shards.rs b/src/engine/shards.rs index 4df3911..860f2f1 100644 --- a/src/engine/shards.rs +++ b/src/engine/shards.rs @@ -8,7 +8,7 @@ pub(crate) struct Shards { shard_bytes: usize, // Flat array of `shard_count * shard_bytes` bytes. - data: Vec, + pub(crate) data: Vec, } impl Shards { diff --git a/src/rate/decoder_work.rs b/src/rate/decoder_work.rs index f5145ad..213ba18 100644 --- a/src/rate/decoder_work.rs +++ b/src/rate/decoder_work.rs @@ -23,7 +23,7 @@ pub struct DecoderWork { recovery_received_count: usize, // May contain extra zero bits. received: FixedBitSet, - shards: Shards, + pub(crate) shards: Shards, } impl DecoderWork {