Crate variable_len_reader
source ·Expand description
§Variable Len Reader
Read this in other languages: English, 简体中文.
§Description
A Rust crate to read variable length data based on varint format.
§Usage
Add this to your Cargo.toml
:
[dependencies]
variable-len-reader = "^2.3"
§Example
Directly use in tcp stream:
use std::net::{TcpListener, TcpStream};
use variable_len_reader::{VariableReader, VariableWriter};
fn main() {
let addr = "localhost:25564";
let server = TcpListener::bind(addr).unwrap();
let mut client = TcpStream::connect(addr).unwrap();
let mut server = server.incoming().next().unwrap().unwrap();
// Write
client.write_string(&"Hello world!").unwrap();
// Read
let message = server.read_string().unwrap();
assert_eq!("Hello world!", message);
}
Use with bytes crate:
use bytes::{Buf, BufMut, BytesMut};
use variable_len_reader::{VariableReader, VariableWriter};
fn main() {
let message = "Hello world!";
let mut writer = BytesMut::new().writer();
// Write
writer.write_string(message).unwrap();
let bytes = writer.into_inner();
assert_eq!(message.len() as u8, bytes[0]);
assert_eq!(message.as_bytes(), &bytes[1..]);
let mut reader = bytes.reader();
// Read
let string = reader.read_string().unwrap();
assert_eq!(message, string);
}
Async mode with tokio crate: (Require ‘async_default’ feature)
use tokio::net::{TcpListener, TcpStream};
use variable_len_reader::{AsyncVariableReader, AsyncVariableWriter};
#[tokio::main]
async fn main() {
let addr = "localhost:25564";
let server = TcpListener::bind(addr).await.unwrap();
let mut client = TcpStream::connect(addr).await.unwrap();
let (mut server, _) = server.accept().await.unwrap();
// Write
client.write_string(&"Hello tokio!").await.unwrap();
// Read
let message = server.read_string().await.unwrap();
assert_eq!("Hello tokio!", message);
}
Modules§
Macros§
Structs§
- ReadF32RawBe
async_raw
- ReadF32RawLe
async_raw
- ReadF32Varint
async_float
- ReadF32Varint2Be
async_long_float
- ReadF32Varint2Le
async_long_float
- ReadF32Varint4Be
async_long_float
- ReadF32Varint4Le
async_long_float
- ReadF64RawBe
async_raw
- ReadF64RawLe
async_raw
- ReadF64Varint
async_float
- ReadF64Varint2Be
async_long_float
- ReadF64Varint2Le
async_long_float
- ReadF64Varint4Be
async_long_float
- ReadF64Varint4Le
async_long_float
- ReadF64Varint8Be
async_long_float
- ReadF64Varint8Le
async_long_float
- ReadI8Raw
async_raw
- ReadI8Varint
async_long_signed
- ReadI16RawBe
async_raw
- ReadI16RawLe
async_raw
- ReadI16Varint
async_signed
- ReadI16Varint2Be
async_long_signed
- ReadI16Varint2Le
async_long_signed
- ReadI32RawBe
async_raw
- ReadI32RawLe
async_raw
- ReadI32Varint
async_signed
- ReadI32Varint2Be
async_long_signed
- ReadI32Varint2Le
async_long_signed
- ReadI32Varint4Be
async_long_signed
- ReadI32Varint4Le
async_long_signed
- ReadI64RawBe
async_raw
- ReadI64RawLe
async_raw
- ReadI64Varint
async_signed
- ReadI64Varint2Be
async_long_signed
- ReadI64Varint2Le
async_long_signed
- ReadI64Varint4Be
async_long_signed
- ReadI64Varint4Le
async_long_signed
- ReadI64Varint8Be
async_long_signed
- ReadI64Varint8Le
async_long_signed
- ReadI128RawBe
async_raw
- ReadI128RawLe
async_raw
- ReadI128Varint
async_signed
- ReadI128Varint2Be
async_long_signed
- ReadI128Varint2Le
async_long_signed
- ReadI128Varint4Be
async_long_signed
- ReadI128Varint4Le
async_long_signed
- ReadI128Varint8Be
async_long_signed
- ReadI128Varint8Le
async_long_signed
- ReadI128Varint16Be
async_long_signed
- ReadI128Varint16Le
async_long_signed
- ReadIsizeRawBe
async_raw_size
- ReadIsizeRawLe
async_raw_size
- ReadIsizeVarint
async_varint_size
andasync_signed
- ReadIsizeVarint2Be
async_varint_size
andasync_long_signed
- ReadIsizeVarint2Le
async_varint_size
andasync_long_signed
- ReadIsizeVarint4Be
async_varint_size
andasync_long_signed
- ReadIsizeVarint4Le
async_varint_size
andasync_long_signed
- ReadIsizeVarint8Be
async_varint_size
andasync_long_signed
- ReadIsizeVarint8Le
async_varint_size
andasync_long_signed
- ReadIsizeVarint16Be
async_varint_size
andasync_long_signed
- ReadIsizeVarint16Le
async_varint_size
andasync_long_signed
- ReadU8Raw
async_raw
- ReadU8Varint
async_long_varint
- ReadU16RawBe
async_raw
- ReadU16RawLe
async_raw
- ReadU16Varint
async_varint
- ReadU16Varint2Be
async_long_varint
- ReadU16Varint2Le
async_long_varint
- ReadU32RawBe
async_raw
- ReadU32RawLe
async_raw
- ReadU32Varint
async_varint
- ReadU32Varint2Be
async_long_varint
- ReadU32Varint2Le
async_long_varint
- ReadU32Varint4Be
async_long_varint
- ReadU32Varint4Le
async_long_varint
- ReadU64RawBe
async_raw
- ReadU64RawLe
async_raw
- ReadU64Varint
async_varint
- ReadU64Varint2Be
async_long_varint
- ReadU64Varint2Le
async_long_varint
- ReadU64Varint4Be
async_long_varint
- ReadU64Varint4Le
async_long_varint
- ReadU64Varint8Be
async_long_varint
- ReadU64Varint8Le
async_long_varint
- ReadU128RawBe
async_raw
- ReadU128RawLe
async_raw
- ReadU128Varint
async_varint
- ReadU128Varint2Be
async_long_varint
- ReadU128Varint2Le
async_long_varint
- ReadU128Varint4Be
async_long_varint
- ReadU128Varint4Le
async_long_varint
- ReadU128Varint8Be
async_long_varint
- ReadU128Varint8Le
async_long_varint
- ReadU128Varint16Be
async_long_varint
- ReadU128Varint16Le
async_long_varint
- ReadUsizeRawBe
async_raw_size
- ReadUsizeRawLe
async_raw_size
- ReadUsizeVarint
async_varint_size
- ReadUsizeVarint2Be
async_varint_size
andasync_long_varint
- ReadUsizeVarint2Le
async_varint_size
andasync_long_varint
- ReadUsizeVarint4Be
async_varint_size
andasync_long_varint
- ReadUsizeVarint4Le
async_varint_size
andasync_long_varint
- ReadUsizeVarint8Be
async_varint_size
andasync_long_varint
- ReadUsizeVarint8Le
async_varint_size
andasync_long_varint
- ReadUsizeVarint16Be
async_varint_size
andasync_long_varint
- ReadUsizeVarint16Le
async_varint_size
andasync_long_varint
- WriteF32RawBe
async_raw
- WriteF32RawLe
async_raw
- WriteF32Varint
async_float
- WriteF32Varint2Be
async_long_float
- WriteF32Varint2Le
async_long_float
- WriteF32Varint4Be
async_long_float
- WriteF32Varint4Le
async_long_float
- WriteF64RawBe
async_raw
- WriteF64RawLe
async_raw
- WriteF64Varint
async_float
- WriteF64Varint2Be
async_long_float
- WriteF64Varint2Le
async_long_float
- WriteF64Varint4Be
async_long_float
- WriteF64Varint4Le
async_long_float
- WriteF64Varint8Be
async_long_float
- WriteF64Varint8Le
async_long_float
- WriteI8Raw
async_raw
- WriteI8Varint
async_long_signed
- WriteI16RawBe
async_raw
- WriteI16RawLe
async_raw
- WriteI16Varint
async_signed
- WriteI16Varint2Be
async_long_signed
- WriteI16Varint2Le
async_long_signed
- WriteI32RawBe
async_raw
- WriteI32RawLe
async_raw
- WriteI32Varint
async_signed
- WriteI32Varint2Be
async_long_signed
- WriteI32Varint2Le
async_long_signed
- WriteI32Varint4Be
async_long_signed
- WriteI32Varint4Le
async_long_signed
- WriteI64RawBe
async_raw
- WriteI64RawLe
async_raw
- WriteI64Varint
async_signed
- WriteI64Varint2Be
async_long_signed
- WriteI64Varint2Le
async_long_signed
- WriteI64Varint4Be
async_long_signed
- WriteI64Varint4Le
async_long_signed
- WriteI64Varint8Be
async_long_signed
- WriteI64Varint8Le
async_long_signed
- WriteI128RawBe
async_raw
- WriteI128RawLe
async_raw
- WriteI128Varint
async_signed
- WriteI128Varint2Be
async_long_signed
- WriteI128Varint2Le
async_long_signed
- WriteI128Varint4Be
async_long_signed
- WriteI128Varint4Le
async_long_signed
- WriteI128Varint8Be
async_long_signed
- WriteI128Varint8Le
async_long_signed
- WriteI128Varint16Be
async_long_signed
- WriteI128Varint16Le
async_long_signed
- WriteIsizeRawBe
async_raw_size
- WriteIsizeRawLe
async_raw_size
- WriteIsizeVarint
async_varint_size
andasync_signed
- WriteIsizeVarint2Be
async_varint_size
andasync_long_signed
- WriteIsizeVarint2Le
async_varint_size
andasync_long_signed
- WriteIsizeVarint4Be
async_varint_size
andasync_long_signed
- WriteIsizeVarint4Le
async_varint_size
andasync_long_signed
- WriteIsizeVarint8Be
async_varint_size
andasync_long_signed
- WriteIsizeVarint8Le
async_varint_size
andasync_long_signed
- WriteIsizeVarint16Be
async_varint_size
andasync_long_signed
- WriteIsizeVarint16Le
async_varint_size
andasync_long_signed
- WriteU8Raw
async_raw
- WriteU8Varint
async_long_varint
- WriteU16RawBe
async_raw
- WriteU16RawLe
async_raw
- WriteU16Varint
async_varint
- WriteU16Varint2Be
async_long_varint
- WriteU16Varint2Le
async_long_varint
- WriteU32RawBe
async_raw
- WriteU32RawLe
async_raw
- WriteU32Varint
async_varint
- WriteU32Varint2Be
async_long_varint
- WriteU32Varint2Le
async_long_varint
- WriteU32Varint4Be
async_long_varint
- WriteU32Varint4Le
async_long_varint
- WriteU64RawBe
async_raw
- WriteU64RawLe
async_raw
- WriteU64Varint
async_varint
- WriteU64Varint2Be
async_long_varint
- WriteU64Varint2Le
async_long_varint
- WriteU64Varint4Be
async_long_varint
- WriteU64Varint4Le
async_long_varint
- WriteU64Varint8Be
async_long_varint
- WriteU64Varint8Le
async_long_varint
- WriteU128RawBe
async_raw
- WriteU128RawLe
async_raw
- WriteU128Varint
async_varint
- WriteU128Varint2Be
async_long_varint
- WriteU128Varint2Le
async_long_varint
- WriteU128Varint4Be
async_long_varint
- WriteU128Varint4Le
async_long_varint
- WriteU128Varint8Be
async_long_varint
- WriteU128Varint8Le
async_long_varint
- WriteU128Varint16Be
async_long_varint
- WriteU128Varint16Le
async_long_varint
- WriteUsizeRawBe
async_raw_size
- WriteUsizeRawLe
async_raw_size
- WriteUsizeVarint
async_varint_size
- WriteUsizeVarint2Be
async_varint_size
andasync_long_varint
- WriteUsizeVarint2Le
async_varint_size
andasync_long_varint
- WriteUsizeVarint4Be
async_varint_size
andasync_long_varint
- WriteUsizeVarint4Le
async_varint_size
andasync_long_varint
- WriteUsizeVarint8Be
async_varint_size
andasync_long_varint
- WriteUsizeVarint8Le
async_varint_size
andasync_long_varint
- WriteUsizeVarint16Be
async_varint_size
andasync_long_varint
- WriteUsizeVarint16Le
async_varint_size
andasync_long_varint