#![doc(html_root_url = "https://docs.rs/ntex-bytes/")]
#![deny(clippy::pedantic)]
#![allow(
unsafe_op_in_unsafe_fn,
clippy::must_use_candidate,
clippy::cast_sign_loss,
clippy::cast_possible_wrap,
clippy::cast_possible_truncation
)]
extern crate alloc;
pub mod buf;
pub use crate::buf::{Buf, BufMut};
mod bvec;
mod bytes;
mod debug;
mod hex;
mod pages;
mod serde;
mod storage;
mod string;
pub use crate::bvec::BytesMut;
pub use crate::bytes::Bytes;
pub use crate::pages::{BytePage, BytePages};
pub use crate::string::ByteString;
#[doc(hidden)]
pub use crate::storage::METADATA_SIZE;
#[doc(hidden)]
#[deprecated]
pub type BytesVec = BytesMut;
#[doc(hidden)]
pub mod info {
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
pub struct Info {
pub id: usize,
pub refs: u32,
pub kind: Kind,
pub capacity: usize,
}
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
pub enum Kind {
Inline,
Static,
Vec,
}
}
#[derive(Copy, Clone, Debug, Default, PartialEq, Eq)]
pub enum BytePageSize {
Size4 = 0,
Size8 = 1,
#[default]
Size16 = 2,
Size24 = 3,
Size32 = 4,
Size48 = 5,
Size64 = 6,
Unset = 7,
}
impl BytePageSize {
const fn capacity(self) -> usize {
match self {
BytePageSize::Size4 => 4 * 1024,
BytePageSize::Size8 => 8 * 1024,
BytePageSize::Size16 => 16 * 1024,
BytePageSize::Size24 => 24 * 1024,
BytePageSize::Size32 => 32 * 1024,
BytePageSize::Size48 => 48 * 1024,
BytePageSize::Size64 | BytePageSize::Unset => 64 * 1024,
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn page_size() {
assert_eq!(BytePageSize::Size4.capacity(), 4 * 1024);
assert_eq!(BytePageSize::Size8.capacity(), 8 * 1024);
assert_eq!(BytePageSize::Size16.capacity(), 16 * 1024);
assert_eq!(BytePageSize::Size24.capacity(), 24 * 1024);
assert_eq!(BytePageSize::Size32.capacity(), 32 * 1024);
assert_eq!(BytePageSize::Size48.capacity(), 48 * 1024);
assert_eq!(BytePageSize::Size64.capacity(), 64 * 1024);
assert_eq!(BytePageSize::Unset.capacity(), 64 * 1024);
}
}