Struct const_format::AsciiStr
source · [−]pub struct AsciiStr<'a>(_);
fmt
only.Expand description
An ascii string slice.
You can also construct an AsciiStr
at compile-time with the ascii_str
macro,
erroring at compile if the constant isn’t ascii.
Example
use const_format::wrapper_types::{AsciiStr, NotAsciiError};
use const_format::ascii_str;
const HELLO: AsciiStr = unwrap_ascii(AsciiStr::new(b"hello"));
const EURO: AsciiStr = unwrap_ascii(AsciiStr::new("foo €".as_bytes()));
assert_eq!(HELLO.as_str(), "hello");
assert_eq!(EURO.as_str(), "<error>");
assert_eq!(AsciiStr::new("foo €".as_bytes()), Err(NotAsciiError{invalid_from: 4}));
const fn unwrap_ascii(res: Result<AsciiStr<'_>, NotAsciiError>) -> AsciiStr<'_> {
match res {
Ok(x) => x,
Err(_) => ascii_str!("<error>"),
}
}
Implementations
sourceimpl<'a> AsciiStr<'a>
impl<'a> AsciiStr<'a>
sourcepub const fn from_str(s: &'a str) -> Result<Self, NotAsciiError>
pub const fn from_str(s: &'a str) -> Result<Self, NotAsciiError>
Constructs this AsciiStr from a possibly non-ascii str slice.
Returns a NonAsciiError
error on the first non-ascii byte.
Example
use const_format::wrapper_types::{AsciiStr, NotAsciiError};
let ok = AsciiStr::from_str("foo bar").unwrap();
assert_eq!(ok.as_str(), "foo bar");
assert_eq!(AsciiStr::from_str("foo bar ½"), Err(NotAsciiError{invalid_from: 8}));
sourcepub const fn new(s: &'a [u8]) -> Result<Self, NotAsciiError>
pub const fn new(s: &'a [u8]) -> Result<Self, NotAsciiError>
Constructs this AsciiStr from a possibly non-ascii byte slice.
Returns a NonAsciiError
error on the first non-ascii byte.
Example
use const_format::wrapper_types::{AsciiStr, NotAsciiError};
let ok = AsciiStr::new(b"foo bar").unwrap();
assert_eq!(ok.as_str(), "foo bar");
assert_eq!(AsciiStr::new(b"foo bar \x80"), Err(NotAsciiError{invalid_from: 8}));
sourcepub const fn empty() -> Self
pub const fn empty() -> Self
Constructs an empty AsciiStr
Example
use const_format::AsciiStr;
assert_eq!(AsciiStr::empty().as_str(), "");
sourcepub const fn len(self) -> usize
pub const fn len(self) -> usize
Queries the length of the AsciiStr
Example
use const_format::{AsciiStr, ascii_str};
assert_eq!(AsciiStr::empty().len(), 0);
assert_eq!(ascii_str!("hello").len(), 5);
sourcepub const fn is_empty(self) -> bool
pub const fn is_empty(self) -> bool
Queries whether this AsciiStr
is empty.
Example
use const_format::{AsciiStr, ascii_str};
assert_eq!(AsciiStr::empty().is_empty(), true);
assert_eq!(ascii_str!("hello").is_empty(), false);
Trait Implementations
sourceimpl FormatMarker for AsciiStr<'_>
impl FormatMarker for AsciiStr<'_>
sourceimpl<'a> Ord for AsciiStr<'a>
impl<'a> Ord for AsciiStr<'a>
sourceimpl<'a> PartialOrd<AsciiStr<'a>> for AsciiStr<'a>
impl<'a> PartialOrd<AsciiStr<'a>> for AsciiStr<'a>
sourcefn partial_cmp(&self, other: &AsciiStr<'a>) -> Option<Ordering>
fn partial_cmp(&self, other: &AsciiStr<'a>) -> Option<Ordering>
This method returns an ordering between self
and other
values if one exists. Read more
1.0.0 · sourcefn lt(&self, other: &Rhs) -> bool
fn lt(&self, other: &Rhs) -> bool
This method tests less than (for self
and other
) and is used by the <
operator. Read more
1.0.0 · sourcefn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
impl<'a> Copy for AsciiStr<'a>
impl<'a> Eq for AsciiStr<'a>
impl<'a> StructuralEq for AsciiStr<'a>
impl<'a> StructuralPartialEq for AsciiStr<'a>
Auto Trait Implementations
impl<'a> RefUnwindSafe for AsciiStr<'a>
impl<'a> Send for AsciiStr<'a>
impl<'a> Sync for AsciiStr<'a>
impl<'a> Unpin for AsciiStr<'a>
impl<'a> UnwindSafe for AsciiStr<'a>
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more