Remove core_only, cfg-out the `format::Item::Owned*` variants
This means that a few more features of formatting items don't compile in non-alloc environments, but they wouldn't have worked correctly anyway.
This commit is contained in:
parent
918cff1f72
commit
64a28d6812
|
@ -26,30 +26,6 @@ use alloc::boxed::Box;
|
|||
#[cfg(feature = "alloc")]
|
||||
use alloc::string::{String, ToString};
|
||||
|
||||
#[cfg(not(any(feature = "alloc", feature = "std", test)))]
|
||||
mod core_only {
|
||||
/// Core only
|
||||
#[derive(Debug, PartialEq, Eq, PartialOrd, Ord)]
|
||||
pub struct Box<T: ?Sized>(core::marker::PhantomData<T>);
|
||||
|
||||
impl Box<str> {
|
||||
/// Core only
|
||||
pub fn len(&self) -> usize { 0 }
|
||||
}
|
||||
|
||||
impl Clone for Box<str> { fn clone(&self) -> Self { Box(core::marker::PhantomData) } }
|
||||
|
||||
impl core::ops::Index<core::ops::RangeFull> for Box<str> {
|
||||
type Output = str;
|
||||
fn index(&self, _: core::ops::RangeFull) -> &Self::Output {
|
||||
""
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(not(any(feature = "alloc", feature = "std", test)))]
|
||||
use self::core_only::Box;
|
||||
|
||||
#[cfg(any(feature = "alloc", feature = "std", test))]
|
||||
use {Datelike, Timelike};
|
||||
use {Weekday, ParseWeekdayError};
|
||||
|
@ -279,10 +255,12 @@ pub enum Item<'a> {
|
|||
/// A literally printed and parsed text.
|
||||
Literal(&'a str),
|
||||
/// Same to `Literal` but with the string owned by the item.
|
||||
#[cfg(any(feature = "alloc", feature = "std", test))]
|
||||
OwnedLiteral(Box<str>),
|
||||
/// Whitespace. Prints literally but reads zero or more whitespace.
|
||||
Space(&'a str),
|
||||
/// Same to `Space` but with the string owned by the item.
|
||||
#[cfg(any(feature = "alloc", feature = "std", test))]
|
||||
OwnedSpace(Box<str>),
|
||||
/// Numeric item. Can be optionally padded to the maximal length (if any) when formatting;
|
||||
/// the parser simply ignores any padded whitespace and zeroes.
|
||||
|
@ -404,6 +382,7 @@ pub fn format<'a, I>(
|
|||
for item in items {
|
||||
match item {
|
||||
Item::Literal(s) | Item::Space(s) => result.push_str(s),
|
||||
#[cfg(any(feature = "alloc", feature = "std", test))]
|
||||
Item::OwnedLiteral(ref s) | Item::OwnedSpace(ref s) => result.push_str(s),
|
||||
|
||||
Item::Numeric(spec, pad) => {
|
||||
|
|
|
@ -218,13 +218,19 @@ pub fn parse<'a, I>(parsed: &mut Parsed, mut s: &str, items: I) -> ParseResult<(
|
|||
s = &s[prefix.len()..];
|
||||
}
|
||||
|
||||
#[cfg(any(feature = "alloc", feature = "std", test))]
|
||||
Item::OwnedLiteral(ref prefix) => {
|
||||
if s.len() < prefix.len() { return Err(TOO_SHORT); }
|
||||
if !s.starts_with(&prefix[..]) { return Err(INVALID); }
|
||||
s = &s[prefix.len()..];
|
||||
}
|
||||
|
||||
Item::Space(_) | Item::OwnedSpace(_) => {
|
||||
Item::Space(_) => {
|
||||
s = s.trim_left();
|
||||
}
|
||||
|
||||
#[cfg(any(feature = "alloc", feature = "std", test))]
|
||||
Item::OwnedSpace(_) => {
|
||||
s = s.trim_left();
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue