polars_core/scalar/
new.rs

1use std::sync::Arc;
2
3use super::Scalar;
4use crate::datatypes::time_unit::TimeUnit;
5use crate::prelude::{AnyValue, DataType, TimeZone};
6
7impl Scalar {
8    #[cfg(feature = "dtype-date")]
9    pub fn new_date(value: i32) -> Self {
10        Scalar::new(DataType::Date, AnyValue::Date(value))
11    }
12
13    #[cfg(feature = "dtype-datetime")]
14    pub fn new_datetime(value: i64, time_unit: TimeUnit, tz: Option<TimeZone>) -> Self {
15        Scalar::new(
16            DataType::Datetime(time_unit, tz.clone()),
17            AnyValue::DatetimeOwned(value, time_unit, tz.map(Arc::new)),
18        )
19    }
20
21    #[cfg(feature = "dtype-duration")]
22    pub fn new_duration(value: i64, time_unit: TimeUnit) -> Self {
23        Scalar::new(
24            DataType::Duration(time_unit),
25            AnyValue::Duration(value, time_unit),
26        )
27    }
28}