Struct anyscript_compiler::types::int::Int
source · pub struct Int<T1> {
pub integral: IntAlias,
pub size: IntAlias,
pub original: T1,
pub type_id: String,
}
Fields§
§integral: IntAlias
§size: IntAlias
§original: T1
§type_id: String
Implementations§
source§impl<T1: 'static + Default + Display + Eq + Hash + Clone + Send + Sync> Int<T1>
impl<T1: 'static + Default + Display + Eq + Hash + Clone + Send + Sync> Int<T1>
sourcepub fn new() -> Self
pub fn new() -> Self
§Create a new instance of the class
pub fn new() -> Self {
let n = T1::default();
Int {
integral: 0,
size: 0,
original: n,
type_id: String::new(),
}
}
sourcepub fn reset(&mut self)
pub fn reset(&mut self)
§Reset the class
pub fn reset(&mut self) {
self.integral = 0;
self.size = 0;
self.type_id = String::new();
self.original = T1::default();
}
sourcepub fn validate(&self) -> (bool, String)
pub fn validate(&self) -> (bool, String)
§Check Valid
pub fn validate(&self) -> (bool, String) {
if TypeId::of::<T1>() == TypeId::of::<IntAlias>() {
return (true, "int".to_string());
} else if TypeId::of::<T1>() == TypeId::of::<FloatAlias>() {
return (true, "float".to_string());
} else if TypeId::of::<T1>() == TypeId::of::<UIntAlias>() {
return (true, "uint".to_string());
} else if TypeId::of::<T1>() == TypeId::of::<&str>() || TypeId::of::<T1>() == TypeId::of::<String>() {
let value = self.original.to_string();
if value.parse::<IntAlias>().is_ok() {
return (true, "int".to_string());
} else if value.parse::<FloatAlias>().is_ok() {
return (true, "float".to_string());
} else if value.parse::<UIntAlias>().is_ok() {
return (true, "uint".to_string());
} else {
return (false, "invalid string".to_string());
}
} else if TypeId::of::<T1>() == TypeId::of::<CString>() {
let c_str = self.original.to_string();
if c_str.parse::<IntAlias>().is_ok() {
return (true, "int".to_string());
} else if c_str.parse::<FloatAlias>().is_ok() {
return (true, "float".to_string());
} else if c_str.parse::<UIntAlias>().is_ok() {
return (true, "uint".to_string());
} else {
return (false, "invalid CString".to_string());
}
} else if TypeId::of::<T1>() == TypeId::of::<List<T1>>() {
let _raw: List<T1> = List::new(); // Explicit type annotation
let _type = _raw.get_type();
return (true, _type);
}
(false, "unsupported type".to_string())
}
sourcepub fn to_float(&mut self, bit32: Option<bool>)
pub fn to_float(&mut self, bit32: Option<bool>)
§Convert Integral to Float, with Optional set to 32 bit or 64 bit
pub fn to_float(&mut self, bit32: Option<bool>) {
let if_32 = bit32.unwrap_or(true); // Default is true
if if_32 {
self.integral = self.integral as f32 as IntAlias;
} else {
self.integral = self.integral as f64 as IntAlias;
}
}
sourcepub fn to_str(&self) -> String
pub fn to_str(&self) -> String
§Convert to String
pub fn to_str(&self) -> String {
self.integral.to_string()
}
sourcepub fn to_cstring(&self) -> CString
pub fn to_cstring(&self) -> CString
§Convert to an CString
pub fn to_cstring(&self) -> CString {
let _nstring = self.to_str();
let _cstr = CString::new(_nstring).unwrap();
_cstr
}
Trait Implementations§
Auto Trait Implementations§
impl<T1> Freeze for Int<T1>where
T1: Freeze,
impl<T1> RefUnwindSafe for Int<T1>where
T1: RefUnwindSafe,
impl<T1> Send for Int<T1>where
T1: Send,
impl<T1> Sync for Int<T1>where
T1: Sync,
impl<T1> Unpin for Int<T1>where
T1: Unpin,
impl<T1> UnwindSafe for Int<T1>where
T1: UnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more