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>, _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 { struct AutoRelease {
cap: usize, cap: usize,
release: ReleaseCapacity, release: ReleaseCapacity,
@@ -147,11 +153,13 @@ impl Default for Chunk {
impl IntoIterator for Chunk { impl IntoIterator for Chunk {
type Item = u8; type Item = u8;
type IntoIter = <Bytes as IntoIterator>::IntoIter; type IntoIter = IntoIter;
#[inline] #[inline]
fn into_iter(self) -> Self::IntoIter { 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) self.bytes.extend(iter)
} }
} }
impl Iterator for IntoIter {
type Item = u8;
#[inline]
fn next(&mut self) -> Option<Self::Item> {
self.inner.next()
}
}