Repository: rust
Issue: Confusing error message for recursive type
Labels: C-enhancement,A-diagnostics,T-compiler

I recently had a very frustrating issue. I wrote some code that didn't compile, but the error was really hard to track down. I've written a small example to illustrate the issue.

```
use std::io;

#[derive(Debug)]
struct Node {
    data: Vec<u8>,
    left: Option<Box<Node>>,
    right: Option<Box<Node>>
}

impl Node {
    fn deserialize<R: io::Read>(mut r: R) -> Option<Self> {
        let size = io::Read::bytes(&mut r).next().unwrap().unwrap();
        if size == 0 {
            return None;
        }
        let data = io::Read::bytes(&mut r).take(size as usize).map(|v| v.unwrap()).collect();
        
        let size = io::Read::bytes(&mut r).next().unwrap().unwrap();
        let left = Node::deserialize(io::Read::take(&mut r, size as u64)).map(Box::new);
        
        let size = io::Read::bytes(&mut r).next().unwrap().unwrap();
        let right = Node::deserialize(io::Read::take(&mut r, size as u64)).map(Box::new);
        
        Some(Self { data, left, right })
    }
}

fn main() {
    let tree = Node::deserialize(&vec![2, 1, 2, 6, 1, 3, 1, 0, 1, 0, 6, 1, 4, 1, 0, 1, 0][..]);
    println!("{:?}", tree);
}
```

The above code doesn't compile and errors with the following error:
```
   Compiling playground v0.0.1 (/playground)
error[E0275]: overflow evaluating the requirement `&[u8]: std::io::Read`
  |
  = help: consider adding a `#![recursion_limit="256"]` attribute to your crate
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut &[u8]`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut &[u8]>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut &[u8]>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut &[u8]>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::io::Read` for `&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::iter::Iterator` for `std::io::Bytes<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
  = note: required because of the requirements on the impl of `std::iter::Iterator` for `std::iter::Map<std::iter::Take<std::io::Bytes<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut std::io::Take<&mut &[u8]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>, [closure@src/main.rs:16:68: 16:82]>`

error: aborting due to previous error

For more information about this error, try `rustc --explain E0275`.
error: Could not compile `playground`.

To learn more, run the command again with --verbose.
```
The code doesn't compile because the combined use of Take + generics + recursion resulted in a type that was recursively defined. Adding a Box to the Take instances and casting to a trait object fixes the problem.
```
        let size = io::Read::bytes(&mut r).next().unwrap().unwrap();
        let left = Node::deserialize(Box::new(io::Read::take(&mut r, size as u64)) as Box<dyn io::Read>).map(Box::new);
        
        let size = io::Read::bytes(&mut r).next().unwrap().unwrap();
        let right = Node::deserialize(Box::new(io::Read::take(&mut r, size as u64)) as Box<dyn io::Read>).map(Box::new);
```
In the real code with the issue, there were more pieces involved and it was far far less obvious than the example I gave. Also the cyclical call graph involved was more complicated and some of the code was generated from a proc-macro. Debugging the issue was tricky and especially since the compiler gave almost no information about how to locate the code with the problem, just the type names it was resolving in the process. When you have a large crate that can be super frustrating.  I know this is not really a bug, but I really wanted to provide this feedback. It would be great if the error message for this contained the call graph or some sort of span infomation.