sestring/src/lib.rs

44 lines
866 B
Rust
Raw Normal View History

2022-12-03 11:07:24 +00:00
#![feature(error_generic_member_access, provide_any)]
2021-10-03 19:52:21 +00:00
pub mod error;
pub mod payload;
#[cfg(feature = "serde")]
pub mod serde;
#[cfg(test)]
mod test;
pub use self::{
error::Error,
payload::Payload,
};
2021-10-10 23:39:39 +00:00
#[derive(Debug, Clone, PartialEq)]
2021-10-04 02:39:37 +00:00
pub struct SeString(pub Vec<Payload>);
2021-10-03 19:52:21 +00:00
impl SeString {
pub fn parse<B: AsRef<[u8]>>(bytes: B) -> Result<Self, Error> {
let payloads = Payload::parse(bytes)?;
Ok(Self(payloads))
}
pub fn encode(&self) -> Vec<u8> {
self.0
.iter()
.flat_map(|p| p.encode())
.collect()
}
pub fn text(&self) -> String {
self.0.iter()
.flat_map(|payload| {
match payload {
Payload::Text(t) => Some(&*t.0),
_ => None,
}
})
.collect()
}
}