pub struct StreamPacker { /* private fields */ }Expand description
Streaming packer that emits completed packs incrementally.
§Example
use seqpacker::stream::{StreamPacker, StreamStrategy};
let mut sp = StreamPacker::new(10, StreamStrategy::NextFit);
// Each add() may return closed packs.
let closed = sp.add(7).unwrap();
assert!(closed.is_empty()); // bin still open
let closed = sp.add(5).unwrap(); // 5 > remaining 3 → closes bin
assert_eq!(closed.len(), 1);
assert_eq!(closed[0].used_capacity(), 7);
// finish() flushes the last open bin.
let remaining = sp.finish();
assert_eq!(remaining.len(), 1);
assert_eq!(remaining[0].used_capacity(), 5);Implementations§
Source§impl StreamPacker
impl StreamPacker
Sourcepub fn new(capacity: usize, strategy: StreamStrategy) -> Self
pub fn new(capacity: usize, strategy: StreamStrategy) -> Self
Create a new streaming packer.
Sourcepub fn with_k(capacity: usize, strategy: StreamStrategy, k: usize) -> Self
pub fn with_k(capacity: usize, strategy: StreamStrategy, k: usize) -> Self
Create a streaming packer with a custom k for Harmonic.
k is ignored for NextFit.
Sourcepub fn add(&mut self, length: usize) -> Result<Vec<Pack>>
pub fn add(&mut self, length: usize) -> Result<Vec<Pack>>
Add a sequence length and return any packs that are now complete.
§Errors
Returns PackError::SequenceTooLong if length exceeds capacity.
Sourcepub fn sequences_added(&self) -> usize
pub fn sequences_added(&self) -> usize
Number of sequences added so far.
Sourcepub fn strategy(&self) -> StreamStrategy
pub fn strategy(&self) -> StreamStrategy
The streaming strategy in use.
Auto Trait Implementations§
impl Freeze for StreamPacker
impl RefUnwindSafe for StreamPacker
impl Send for StreamPacker
impl Sync for StreamPacker
impl Unpin for StreamPacker
impl UnsafeUnpin for StreamPacker
impl UnwindSafe for StreamPacker
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more