0048-Bytes-BufMut使用
环境
- Time 2022-05-29
- Rust 1.61.0
- Bytes 1.1.0
前言
说明
参考:https://docs.rs/bytes/latest/bytes/trait.BufMut.html
目标
使用 BufMut
的方法。
remaining_mut
fn main() {
let mut dst = [0; 10];
let mut buf = &mut dst[..];
println!("{:?}", buf.remaining_mut());
buf.put(&b"hello"[..]);
println!("{:?}", buf.remaining_mut());
}
new
fn main() {
let mut buf = Vec::with_capacity(16);
buf.chunk_mut()[0..2].copy_from_slice(b"he");
unsafe { buf.advance_mut(2) };
buf.chunk_mut()[0..3].copy_from_slice(b"llo");
unsafe {
buf.advance_mut(3);
}
assert_eq!(5, buf.len());
assert_eq!(buf, b"hello");
}
chunk_mut
fn main() {
let mut buf = Vec::with_capacity(16);
unsafe {
buf.chunk_mut()[0..].as_mut_ptr().write(b'h');
buf.chunk_mut()[1..].as_mut_ptr().write(b'e');
buf.advance_mut(2);
buf.chunk_mut()[0..].as_mut_ptr().write(b'l');
buf.chunk_mut()[1..].as_mut_ptr().write(b'l');
buf.chunk_mut()[2..].as_mut_ptr().write(b'o');
buf.advance_mut(3);
}
assert_eq!(5, buf.len());
assert_eq!(buf, b"hello");
}
has_remaining_mut
fn main() {
let mut dst = [0; 5];
let buf = &mut dst[..];
println!("{:?}", buf.has_remaining_mut());
}
put
fn main() {
let mut buf = vec![];
buf.put_u8(b'h');
buf.put(&b"ello"[..]);
buf.put(b" world".as_ref());
assert_eq!(buf, b"hello world");
}
put_slice
fn main() {
let mut dst = [0; 6];
let mut buf = &mut dst[..];
buf.put_slice(b"hello");
assert_eq!(1, buf.remaining_mut());
assert_eq!(b"hello\0", &dst);
}
put_bytes
fn main() {
let mut dst = [0; 6];
let mut buf = &mut dst[..];
buf.put_bytes(b'a', 4);
assert_eq!(2, buf.remaining_mut());
assert_eq!(b"aaaa\0\0", &dst);
}
put_u8
fn main() {
let mut buf = vec![];
buf.put_u8(0x01);
assert_eq!(buf, b"\x01");
}
总结
使用了 BufMut
中定义的一些方法。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2020-09-30 【JavaScript】展开语法
2020-09-30 【JavaScript】剩余参数
2020-09-30 【JavaScript】默认参数
2020-09-30 【JavaScript】import
2020-09-30 【JavaScript】debugger
2020-09-30 【JavaScript】for await...of