Replacing the generic impl Read with Cursor<&[u8]> lets us view directly inside of the buffer, allowing us to do neat things like making sure the other connection isn't lying to us about how many bytes we have to read, and potentially making some things non-allocating in the future.
The branch is called "no cursor" because my (flawed) initial approach didn't use Cursor.
Replacing the generic impl Read with Cursor<&[u8]> lets us view directly inside of the buffer, allowing us to do neat things like making sure the other connection isn't lying to us about how many bytes we have to read, and potentially making some things non-allocating in the future.
The branch is called "no cursor" because my (flawed) initial approach didn't use Cursor.