cast_wd 0.0.5

这是一个类型转换的package
Documentation
//! 类型转换为数字
//! author:wangdong
//! time:2020-09-30 14:13:56

use std::any::{Any};
use std::str;

#[macro_export]
macro_rules! r#u8 {
    ($item:expr) => {
        $crate::int::to_f64($item) as u8 
    };
}

#[macro_export]
macro_rules! r#u16 {
    ($item:expr) => {
        $crate::int::to_f64($item) as u16 
    };
}

#[macro_export]
macro_rules! r#u32 {
    ($item:expr) => {
        $crate::int::to_f64($item) as u32 
    };
}

#[macro_export]
macro_rules! r#u64 {
    ($item:expr) => {
        $crate::int::to_f64($item) as u64 
    };
}

#[macro_export]
macro_rules! r#u128 {
    ($item:expr) => {
        $crate::int::to_f64($item) as u128 
    };
}

#[macro_export]
macro_rules! r#i8 {
    ($item:expr) => {
        $crate::int::to_f64($item) as i8 
    };
}

#[macro_export]
macro_rules! r#i16 {
    ($item:expr) => {
        $crate::int::to_f64($item) as i16 
    };
}

#[macro_export]
macro_rules! r#i32 {
    ($item:expr) => {
        $crate::int::to_f64($item) as i32 
    };
}

#[macro_export]
macro_rules! r#i64 {
    ($item:expr) => {
        $crate::int::to_f64($item) as i64 
    };
}

#[macro_export]
macro_rules! r#i128 {
    ($item:expr) => {
        $crate::int::to_f64($item) as i128 
    };
}

#[macro_export]
macro_rules! r#f32 {
    ($item:expr) => {
        $crate::int::to_f64($item) as f32 
    };
}

#[macro_export]
macro_rules! r#f64 {
    ($item:expr) => {
        $crate::int::to_f64($item)
    };
}




#[allow(dead_code)]
pub fn to_f64(value:&dyn Any)->f64{
    if let Some(v) = value.downcast_ref::<i8>(){
        *v as f64
    }else if let Some(v) = value.downcast_ref::<i16>(){
        *v as f64
    }else if let Some(v) = value.downcast_ref::<i32>(){
        *v as f64
    }else if let Some(v) = value.downcast_ref::<i64>(){
        *v as f64
    }else if let Some(v) = value.downcast_ref::<i128>(){
        *v as f64
    }else if let Some(v) = value.downcast_ref::<u8>(){
        *v as f64
    }else if let Some(v) = value.downcast_ref::<u16>(){
        *v as f64
    }else if let Some(v) = value.downcast_ref::<u32>(){
        *v as f64
    }else if let Some(v) = value.downcast_ref::<u64>(){
        *v as f64
    }else if let Some(v) = value.downcast_ref::<u128>(){
        *v as f64
    }else if let Some(v) = value.downcast_ref::<f32>(){
        *v as f64
    }else if let Some(v) = value.downcast_ref::<f64>(){
        *v as f64
    }else if let Some(v) = value.downcast_ref::<usize>(){
        *v as f64
    }else if let Some(v) = value.downcast_ref::<isize>(){
        *v as f64
    }else if let Some(v) = value.downcast_ref::<bool>(){
        if *v {1.0}else{0.0}
    }else if let Some(v) = value.downcast_ref::<String>(){
        v.parse::<f64>().unwrap()
    }else if let Some(v) = value.downcast_ref::<&str>(){
        v.parse::<f64>().unwrap()
    }else {
        0.0
    }
}