#![doc = include_str!("../doc/rustdoc/string1.md")]
#![doc = "```text"]
#![doc = include_str!("../doc/rustdoc/strings.d2")]
#![doc = "```"]
#![doc = include_str!("../doc/rustdoc/string2.md")]
#[cfg(feature = "base64")]
pub mod base64;
mod builder;
mod bytes;
mod secretbuf;
#[cfg(feature = "serde")]
mod serde;
mod splitter;
mod subtypes;
#[cfg(test)]
mod tests;
pub mod tf;
pub use builder::*;
pub use bytes::*;
pub use secretbuf::*;
pub use splitter::*;
pub use subtypes::*;
use std::borrow::Cow;
pub unsafe trait Transform {
type Value;
fn transform<'a>(self, bytes: &Bytes<'a>) -> Transformation<'a, Self::Value>;
}
pub struct Transformation<'a, T> {
pub value: T,
pub transformed: Cow<'a, [u8]>,
pub utf8: Utf8Policy,
}
impl<'a, T> Transformation<'a, T> {
pub fn empty(value: T) -> Self {
Transformation {
value,
transformed: Cow::Borrowed(Default::default()),
utf8: Utf8Policy::Valid,
}
}
}
#[repr(i8)]
#[derive(Clone, Copy, PartialEq, Eq, Default, Debug)]
pub enum Utf8Policy {
Invalid = -1,
#[default]
Recheck = 0,
Valid = 1,
Preserve,
PreserveStrict,
}