haystack_types/
cast.rs

1use std::str::FromStr;
2use core::fmt::Display;
3use num::Float;
4use crate::{h_bool::HBool, h_coord::HCoord, h_date::HDate, h_datetime::HDateTime, h_dict::HDict, h_grid::HGrid, h_list::HList, h_marker::HMarker, h_na::HNA, h_null::HNull, h_number::HNumber, h_ref::HRef, h_remove::HRemove, h_str::HStr, h_time::HTime, h_uri::HUri, io::HBox, HVal, NumTrait};
5
6
7pub trait HCast<'a,FT> 
8    where
9        FT: NumTrait + 'a,
10        //T: HVal<'a,FT> + ?Sized
11    {
12    fn get_null(&self) -> Option<&HNull>;
13    fn get_marker(&self) -> Option<&HMarker>;
14    fn get_remove(&self) -> Option<&HRemove>;
15    fn get_na(&self) -> Option<&HNA>;
16    fn get_bool(&self) -> Option<&HBool>;
17    fn get_string(&self) -> Option<&HStr>;
18    fn get_uri(&self) -> Option<&HUri>;
19    fn get_coord(&self) -> Option<&HCoord<FT>>;
20    fn get_number(&self) -> Option<&HNumber<FT>>;
21    fn get_datetime(&self) -> Option<&HDateTime>;
22    fn get_date(&self) -> Option<&HDate>;
23    fn get_time(&self) -> Option<&HTime>;
24    fn get_ref(&self) -> Option<&HRef>;
25    fn get_dict(&'a self) -> Option<&'a HDict<'a,FT>>;
26    fn get_list(&'a self) -> Option<&'a HList<'a,FT>>;
27    fn get_grid(&'a self) -> Option<&'a HGrid<'a,FT>>;
28}
29
30impl <'a,FT>HCast<'a,FT> for HBox<'a,FT>
31    where
32        FT: NumTrait + 'a,
33        //T: HVal<'a,FT> + ?Sized,
34    {
35    fn get_null(&self) -> Option<&HNull> { self.get_null_val() }
36    fn get_marker(&self) -> Option<&HMarker> { self.get_marker_val() }
37    fn get_remove(&self) -> Option<&HRemove> { self.get_remove_val() }
38    fn get_na(&self) -> Option<&HNA> { self.get_na_val() }
39    fn get_bool(&self) -> Option<&HBool> { self.get_bool_val() }
40    fn get_string(&self) -> Option<&HStr> { self.get_string_val() }
41    fn get_uri(&self) -> Option<&HUri> { self.get_uri_val() }
42    fn get_coord(&self) -> Option<&HCoord<FT>> { self.get_coord_val() }
43    fn get_number(&self) -> Option<&HNumber<FT>> { self.get_number_val() }
44    fn get_datetime(&self) -> Option<&HDateTime> { self.get_datetime_val() }
45    fn get_date(&self) -> Option<&HDate> { self.get_date_val() }
46    fn get_time(&self) -> Option<&HTime> { self.get_time_val() }
47    fn get_ref(&self) -> Option<&HRef> { self.get_ref_val() }
48    fn get_dict(&'a self) -> Option<&'a HDict<'a,FT>> { self.get_dict_val() }
49    fn get_list(&'a self) -> Option<&'a HList<'a,FT>> { self.get_list_val() }
50    fn get_grid(&'a self) -> Option<&'a HGrid<'a,FT>> { self.get_grid_val() }
51}