refactor(chunk): hide Chunk::into_iter type

This commit is contained in:
Sean McArthur
2018-05-08 18:56:56 -07:00
parent e236b01df5
commit aa603762ca

View File

@@ -20,6 +20,12 @@ pub struct Chunk {
_flow_control: Option<AutoRelease>,
}
// An unexported type to prevent locking `Chunk::into_iter()` to `Bytes::into_iter()`.
#[derive(Debug)]
pub struct IntoIter {
inner: <Bytes as IntoIterator>::IntoIter,
}
struct AutoRelease {
cap: usize,
release: ReleaseCapacity,
@@ -147,11 +153,13 @@ impl Default for Chunk {
impl IntoIterator for Chunk {
type Item = u8;
type IntoIter = <Bytes as IntoIterator>::IntoIter;
type IntoIter = IntoIter;
#[inline]
fn into_iter(self) -> Self::IntoIter {
self.bytes.into_iter()
IntoIter {
inner: self.bytes.into_iter(),
}
}
}
@@ -161,3 +169,13 @@ impl Extend<u8> for Chunk {
self.bytes.extend(iter)
}
}
impl Iterator for IntoIter {
type Item = u8;
#[inline]
fn next(&mut self) -> Option<Self::Item> {
self.inner.next()
}
}