Skip to content

Commit 1858331

Browse files
alambJichaoS
authored andcommitted
Do not allocate in impl Display for DateTimeField (apache#1209)
1 parent 930f670 commit 1858331

File tree

1 file changed

+43
-54
lines changed

1 file changed

+43
-54
lines changed

src/ast/value.rs

+43-54
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,6 @@
1313
#[cfg(not(feature = "std"))]
1414
use alloc::string::String;
1515

16-
#[cfg(not(feature = "std"))]
17-
use alloc::format;
18-
19-
#[cfg(not(feature = "std"))]
20-
use alloc::string::ToString;
21-
2216
use core::fmt;
2317

2418
#[cfg(feature = "bigdecimal")]
@@ -175,56 +169,51 @@ pub enum DateTimeField {
175169

176170
impl fmt::Display for DateTimeField {
177171
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
178-
f.write_str(
179-
match self {
180-
DateTimeField::Year => "YEAR".to_string(),
181-
DateTimeField::Month => "MONTH".to_string(),
182-
DateTimeField::Week(week_day) => {
183-
format!(
184-
"WEEK{}",
185-
week_day
186-
.as_ref()
187-
.map(|w| format!("({w})"))
188-
.unwrap_or_default()
189-
)
172+
match self {
173+
DateTimeField::Year => write!(f, "YEAR"),
174+
DateTimeField::Month => write!(f, "MONTH"),
175+
DateTimeField::Week(week_day) => {
176+
write!(f, "WEEK")?;
177+
if let Some(week_day) = week_day {
178+
write!(f, "({week_day})")?
190179
}
191-
DateTimeField::Day => "DAY".to_string(),
192-
DateTimeField::DayOfWeek => "DAYOFWEEK".to_string(),
193-
DateTimeField::DayOfYear => "DAYOFYEAR".to_string(),
194-
DateTimeField::Date => "DATE".to_string(),
195-
DateTimeField::Datetime => "DATETIME".to_string(),
196-
DateTimeField::Hour => "HOUR".to_string(),
197-
DateTimeField::Minute => "MINUTE".to_string(),
198-
DateTimeField::Second => "SECOND".to_string(),
199-
DateTimeField::Century => "CENTURY".to_string(),
200-
DateTimeField::Decade => "DECADE".to_string(),
201-
DateTimeField::Dow => "DOW".to_string(),
202-
DateTimeField::Doy => "DOY".to_string(),
203-
DateTimeField::Epoch => "EPOCH".to_string(),
204-
DateTimeField::Isodow => "ISODOW".to_string(),
205-
DateTimeField::Isoyear => "ISOYEAR".to_string(),
206-
DateTimeField::IsoWeek => "ISOWEEK".to_string(),
207-
DateTimeField::Julian => "JULIAN".to_string(),
208-
DateTimeField::Microsecond => "MICROSECOND".to_string(),
209-
DateTimeField::Microseconds => "MICROSECONDS".to_string(),
210-
DateTimeField::Millenium => "MILLENIUM".to_string(),
211-
DateTimeField::Millennium => "MILLENNIUM".to_string(),
212-
DateTimeField::Millisecond => "MILLISECOND".to_string(),
213-
DateTimeField::Milliseconds => "MILLISECONDS".to_string(),
214-
DateTimeField::Nanosecond => "NANOSECOND".to_string(),
215-
DateTimeField::Nanoseconds => "NANOSECONDS".to_string(),
216-
DateTimeField::Quarter => "QUARTER".to_string(),
217-
DateTimeField::Time => "TIME".to_string(),
218-
DateTimeField::Timezone => "TIMEZONE".to_string(),
219-
DateTimeField::TimezoneAbbr => "TIMEZONE_ABBR".to_string(),
220-
DateTimeField::TimezoneHour => "TIMEZONE_HOUR".to_string(),
221-
DateTimeField::TimezoneMinute => "TIMEZONE_MINUTE".to_string(),
222-
DateTimeField::TimezoneRegion => "TIMEZONE_REGION".to_string(),
223-
DateTimeField::NoDateTime => "NODATETIME".to_string(),
224-
DateTimeField::Custom(custom) => format!("{custom}"),
180+
Ok(())
225181
}
226-
.as_str(),
227-
)
182+
DateTimeField::Day => write!(f, "DAY"),
183+
DateTimeField::DayOfWeek => write!(f, "DAYOFWEEK"),
184+
DateTimeField::DayOfYear => write!(f, "DAYOFYEAR"),
185+
DateTimeField::Date => write!(f, "DATE"),
186+
DateTimeField::Datetime => write!(f, "DATETIME"),
187+
DateTimeField::Hour => write!(f, "HOUR"),
188+
DateTimeField::Minute => write!(f, "MINUTE"),
189+
DateTimeField::Second => write!(f, "SECOND"),
190+
DateTimeField::Century => write!(f, "CENTURY"),
191+
DateTimeField::Decade => write!(f, "DECADE"),
192+
DateTimeField::Dow => write!(f, "DOW"),
193+
DateTimeField::Doy => write!(f, "DOY"),
194+
DateTimeField::Epoch => write!(f, "EPOCH"),
195+
DateTimeField::Isodow => write!(f, "ISODOW"),
196+
DateTimeField::Isoyear => write!(f, "ISOYEAR"),
197+
DateTimeField::IsoWeek => write!(f, "ISOWEEK"),
198+
DateTimeField::Julian => write!(f, "JULIAN"),
199+
DateTimeField::Microsecond => write!(f, "MICROSECOND"),
200+
DateTimeField::Microseconds => write!(f, "MICROSECONDS"),
201+
DateTimeField::Millenium => write!(f, "MILLENIUM"),
202+
DateTimeField::Millennium => write!(f, "MILLENNIUM"),
203+
DateTimeField::Millisecond => write!(f, "MILLISECOND"),
204+
DateTimeField::Milliseconds => write!(f, "MILLISECONDS"),
205+
DateTimeField::Nanosecond => write!(f, "NANOSECOND"),
206+
DateTimeField::Nanoseconds => write!(f, "NANOSECONDS"),
207+
DateTimeField::Quarter => write!(f, "QUARTER"),
208+
DateTimeField::Time => write!(f, "TIME"),
209+
DateTimeField::Timezone => write!(f, "TIMEZONE"),
210+
DateTimeField::TimezoneAbbr => write!(f, "TIMEZONE_ABBR"),
211+
DateTimeField::TimezoneHour => write!(f, "TIMEZONE_HOUR"),
212+
DateTimeField::TimezoneMinute => write!(f, "TIMEZONE_MINUTE"),
213+
DateTimeField::TimezoneRegion => write!(f, "TIMEZONE_REGION"),
214+
DateTimeField::NoDateTime => write!(f, "NODATETIME"),
215+
DateTimeField::Custom(custom) => write!(f, "{custom}"),
216+
}
228217
}
229218
}
230219

0 commit comments

Comments
 (0)