NeuroWhAI의 잡블로그

[Rust] bytes::Bytes 본문

개발 및 공부/라이브러리&프레임워크

[Rust] bytes::Bytes

NeuroWhAI 2018. 1. 6. 15:56 ...




use bytes::Bytes;

let mut mem = Bytes::from(&b"Hello world"[..]);
let a = mem.slice(0, 5);

assert_eq!(&a[..], b"Hello");

let b = mem.split_to(6);

assert_eq!(&mem[..], b"world");
assert_eq!(&b[..], b"Hello ");



기본적으로 바이트 배열을 표현하는 구조체 입니다.
특이한 점은 내부의 배열을 레퍼런스 카운팅을 통해 관리하며 각 Bytes들은 배열의 범위만을 담고 있을 뿐입니다.
덕분에 배열을 자르는 행동(split, slice)들을 단순히 범위의 수정으로 구현할 수 있으며
더이상 배열이 필요하지 않으면 내부 배열은 소멸하게 됩니다.
extend 메소드로 배열을 확장할 수 있는데 이때의 동작 방식은 C++의 std::vector와 비슷한 것 같습니다.

이런 특정을 가지는 이유는 네트워크 프로그래밍을 목적으로 만들어졌기 때문이라고 하네요.

더 다양한 변경 메소드를 지원하는 BytesMut 구조체도 있습니다.


0 Comments
댓글쓰기 폼