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.2"
§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§
- 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_sizeandasync_signed - ReadIsizeVarint2Be
async_varint_sizeandasync_long_signed - ReadIsizeVarint2Le
async_varint_sizeandasync_long_signed - ReadIsizeVarint4Be
async_varint_sizeandasync_long_signed - ReadIsizeVarint4Le
async_varint_sizeandasync_long_signed - ReadIsizeVarint8Be
async_varint_sizeandasync_long_signed - ReadIsizeVarint8Le
async_varint_sizeandasync_long_signed - ReadIsizeVarint16Be
async_varint_sizeandasync_long_signed - ReadIsizeVarint16Le
async_varint_sizeandasync_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_sizeandasync_long_varint - ReadUsizeVarint2Le
async_varint_sizeandasync_long_varint - ReadUsizeVarint4Be
async_varint_sizeandasync_long_varint - ReadUsizeVarint4Le
async_varint_sizeandasync_long_varint - ReadUsizeVarint8Be
async_varint_sizeandasync_long_varint - ReadUsizeVarint8Le
async_varint_sizeandasync_long_varint - ReadUsizeVarint16Be
async_varint_sizeandasync_long_varint - ReadUsizeVarint16Le
async_varint_sizeandasync_long_varint - 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_sizeandasync_signed - WriteIsizeVarint2Be
async_varint_sizeandasync_long_signed - WriteIsizeVarint2Le
async_varint_sizeandasync_long_signed - WriteIsizeVarint4Be
async_varint_sizeandasync_long_signed - WriteIsizeVarint4Le
async_varint_sizeandasync_long_signed - WriteIsizeVarint8Be
async_varint_sizeandasync_long_signed - WriteIsizeVarint8Le
async_varint_sizeandasync_long_signed - WriteIsizeVarint16Be
async_varint_sizeandasync_long_signed - WriteIsizeVarint16Le
async_varint_sizeandasync_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_sizeandasync_long_varint - WriteUsizeVarint2Le
async_varint_sizeandasync_long_varint - WriteUsizeVarint4Be
async_varint_sizeandasync_long_varint - WriteUsizeVarint4Le
async_varint_sizeandasync_long_varint - WriteUsizeVarint8Be
async_varint_sizeandasync_long_varint - WriteUsizeVarint8Le
async_varint_sizeandasync_long_varint - WriteUsizeVarint16Be
async_varint_sizeandasync_long_varint - WriteUsizeVarint16Le
async_varint_sizeandasync_long_varint