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>

source

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(),
    }
}

source

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();
}

source

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())
}

source

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;
    }
}
source

pub fn to_str(&self) -> String

§Convert to String
pub fn to_str(&self) -> String {
    self.integral.to_string()
}
source

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
}
source

pub fn from_string(s: &str) -> Result<Self, <IntAlias as FromStr>::Err>

§Convert from String
pub fn from_string(s: &str) -> Result<Self, <IntAlias as FromStr>::Err> {
    let integral = s.parse::<IntAlias>()?;
    Ok(Int {
        integral,
        size: 0,
        original: T1::default(),
        type_id: String::new(),
    })
}

Trait Implementations§

source§

impl<T1: Clone> Clone for Int<T1>

source§

fn clone(&self) -> Int<T1>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<T1: 'static + Default + Display + Eq + Hash + Clone + Send + Sync> Default for Int<T1>

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<T1: 'static + Default + Display + Eq + Hash + Clone + Send + Sync> Display for Int<T1>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> FmtResult

Formats the value using the given formatter. Read more

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> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where T: Clone,

source§

default unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoEither for T

source§

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 more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T> ToString for T
where T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.