1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
use crate::prelude::*;
impl Series {
pub fn full_null(name: &str, size: usize, dtype: &DataType) -> Self {
match dtype {
DataType::List(inner_dtype) => {
ListChunked::full_null_with_dtype(name, size, inner_dtype).into_series()
}
#[cfg(feature = "dtype-categorical")]
DataType::Categorical(_) => CategoricalChunked::full_null(name, size).into_series(),
#[cfg(feature = "dtype-date")]
DataType::Date => Int32Chunked::full_null(name, size)
.into_date()
.into_series(),
#[cfg(feature = "dtype-datetime")]
DataType::Datetime(tu, tz) => Int64Chunked::full_null(name, size)
.into_datetime(*tu, tz.clone())
.into_series(),
#[cfg(feature = "dtype-duration")]
DataType::Duration(tu) => Int64Chunked::full_null(name, size)
.into_duration(*tu)
.into_series(),
#[cfg(feature = "dtype-time")]
DataType::Time => Int64Chunked::full_null(name, size)
.into_time()
.into_series(),
#[cfg(feature = "dtype-struct")]
DataType::Struct(fields) => {
let fields = fields
.iter()
.map(|fld| Series::full_null(fld.name(), size, fld.data_type()))
.collect::<Vec<_>>();
StructChunked::new(name, &fields).unwrap().into_series()
}
DataType::Null => ChunkedArray::new_null("", size).into_series(),
_ => {
macro_rules! primitive {
($type:ty) => {{
ChunkedArray::<$type>::full_null(name, size).into_series()
}};
}
macro_rules! bool {
() => {{
ChunkedArray::<BooleanType>::full_null(name, size).into_series()
}};
}
macro_rules! utf8 {
() => {{
ChunkedArray::<Utf8Type>::full_null(name, size).into_series()
}};
}
#[cfg(feature = "dtype-binary")]
macro_rules! binary {
() => {{
ChunkedArray::<BinaryType>::full_null(name, size).into_series()
}};
}
match_dtype_to_logical_apply_macro!(dtype, primitive, utf8, binary, bool)
}
}
}
}