Peekable reader and async reader, which enhance your network programming experience.
APACHE-2.0 License
Peekable reader and async reader, which enhance your network programming experience.
English | 简体中文
Std
[dependencies]
peekable = "0.2"
Tokio I/O
[dependencies]
peekable = { version = "0.2", features = ["tokio"] }
Futures I/O
[dependencies]
peekable = { version = "0.2", features = ["future"] }
Std
use std::{net::TcpStream, io::Read};
use peekable::Peekable;
let conn = TcpStream::connect("127.0.0.1:8080").unwrap();
let mut peekable = Peekable::from(conn);
let mut peeked = [0; 16];
peekable.peek_exact(&mut peeked).unwrap();
let mut readed = [0; 16];
peekable.read_exact(&mut readed).unwrap();
assert_eq!(peeked, readed);
Tokio I/O
use tokio::{net::TcpStream, io::AsyncReadExt};
use peekable::tokio::AsyncPeekable;
let conn = TcpStream::connect("127.0.0.1:8080").await.unwrap();
let mut peekable = AsyncPeekable::from(conn);
let mut peeked = [0; 16];
peekable.peek_exact(&mut peeked).await.unwrap();
let mut readed = [0; 16];
peekable.read_exact(&mut readed).await.unwrap();
assert_eq!(peeked, readed);
Futures I/O
use async_std::net::TcpStream;
use futures::AsyncReadExt;
use peekable::future::AsyncPeekable;
let conn = TcpStream::connect("127.0.0.1:8080").await.unwrap();
let mut peekable = AsyncPeekable::from(conn);
let mut peeked = [0; 16];
peekable.peek_exact(&mut peeked).await.unwrap();
let mut readed = [0; 16];
peekable.read_exact(&mut readed).await.unwrap();
assert_eq!(peeked, readed);
const N: usize
peekable
is under the terms of both the MIT license and the
Apache License (Version 2.0).
See LICENSE-APACHE, LICENSE-MIT for details.
Copyright (c) 2024 Al Liu.