7个版本
0.2.2 | 2024年1月31日 |
---|---|
0.2.1 | 2024年1月31日 |
0.1.5 | 2023年12月10日 |
#931 in 网络编程
每月下载量105
25KB
365 行
Send-it
一个Rust包,用于通过流使用可变长度编码一起发送多个信息段。
* 此工具不压缩或加密数据。它将数据转换为字节数据流,并添加每个段的长度信息
示例
use send_it::writer::VarWriter;
use send_it::reader::VarReader;
// Create a new VarWriter
let mut writer = VarWriter::new();
// Add some sample data
writer.add_string("Hello, ");
writer.add_string("World!");
// Use any Write implementor as your stream (i.e. TcpStream)
let mut stream: Vec<u8> = Vec::new();
// encode the data and send it over the stream
writer.send(&mut stream).expect("Failed to send data");
// turn the vector into a slice as Vec does not implement Read
let mut fake_stream = stream.as_slice();
// create a new VarReader to read from the stream we wrote to
let mut reader = VarReader::new(&mut fake_stream);
// read the data from the stream
let data = reader.read_data().unwrap();
assert_eq!(data[0].to_string(), "Hello, ");
assert_eq!(data[1].to_string(), "World!");
功能
写入(默认启用)
添加VarWriter结构体,用于使用可变长度编码将数据写入流
读取(默认启用)
添加VarReader结构体,用于使用可变长度编码从流中读取数据
大端(默认禁用)
将编码更改为使用大端而不是小端
用法
VarWriter
一个结构体,用于使用可变长度编码将数据写入流
特性:'writing'(默认启用)
use send_it::writer::VarWriter;
// Create a new VarWriter
let mut writer = VarWriter::new();
// Add some sample data
writer.add_string("Hello, ");
writer.add_string("World!");
// Use any Write implementor as your stream (i.e. TcpStream)
let mut stream: Vec<u8> = Vec::new();
// encode the data and send it over the stream
writer.send(&mut stream).expect("Failed to send data");
VarReader
一个结构体,用于使用可变长度编码从流中读取数据
特性:'reading'(默认启用)
use send_it::reader::VarReader;
// Create a sample stream, this is the output from the above VarWriter example
let stream: Vec<u8> = vec![21, 7, 0, 0, 0, 72, 101, 108, 108, 111, 44, 32, 6, 0, 0, 0, 87, 111, 114, 108, 100, 33];
// turn the vector into a slice as Vec does not implement Read
let mut fake_stream = stream.as_slice();
// create a new VarReader
let mut reader = VarReader::new(&mut fake_stream);
// read the data from the stream
let data = reader.read_data().unwrap();
assert_eq!(data[0].to_string(), "Hello, ");
assert_eq!(data[1].to_string(), "World!");
Segment
一个结构体,用于表示数据段
use send_it::Segment;
let mut segment = Segment::new();
segment.append(Segment::from("Hello, "));
segment.append(Segment::from("World!"));
assert_eq!(segment.to_string(), "Hello, World!");
依赖
~0–1.2MB
~20K SLoC