]>
git.proxmox.com Git - rustc.git/blob - vendor/minifier/src/json/read/internal_reader.rs
1 // Take a look at the license at the top of the repository in the LICENSE file.
3 use super::internal_buffer
::Buffer
;
9 pub struct InternalReader
<R
> {
15 impl<R
: Read
> InternalReader
<R
> {
16 pub fn new(mut read
: R
, buffer_size
: usize) -> Result
<Self, Error
> {
17 let mut buffer
= Buffer
::new(buffer_size
);
18 InternalReader
::read_data(&mut read
, &mut buffer
)?
;
26 fn read_data(read
: &mut R
, buffer
: &mut Buffer
) -> Result
<(), Error
> {
27 let size
= read
.read(buffer
.as_mut())?
;
28 buffer
.update_metadata(size
);
33 impl<R
: Read
+ fmt
::Debug
> fmt
::Debug
for InternalReader
<R
> {
34 fn fmt(&self, f
: &mut fmt
::Formatter
) -> fmt
::Result
{
35 f
.debug_struct("JsonReader")
36 .field("read", &self.read
)
37 .field("buffer_size", &self.buffer_size
)
38 .field("buffer", &self.buffer
)
43 impl<R
: Read
> Iterator
for InternalReader
<R
> {
44 type Item
= Result
<u8, Error
>;
47 fn next(&mut self) -> Option
<Result
<u8, Error
>> {
48 if self.buffer_size
== 0 {
52 if let Some(item
) = self.buffer
.next() {
53 return Some(Ok(item
));
54 } else if self.buffer
.cont() {
55 if let Err(err
) = InternalReader
::read_data(&mut self.read
, &mut self.buffer
) {
56 return Some(Err(err
));