//! A few helper functions for dealing with primitives. pub use chalk_ir::{FloatTy, IntTy, UintTy}; pub use hir_def::builtin_type::{BuiltinFloat, BuiltinInt, BuiltinUint}; pub fn int_ty_to_string(ty: IntTy) -> &'static str { match ty { IntTy::Isize => "isize", IntTy::I8 => "i8", IntTy::I16 => "i16", IntTy::I32 => "i32", IntTy::I64 => "i64", IntTy::I128 => "i128", } } pub fn uint_ty_to_string(ty: UintTy) -> &'static str { match ty { UintTy::Usize => "usize", UintTy::U8 => "u8", UintTy::U16 => "u16", UintTy::U32 => "u32", UintTy::U64 => "u64", UintTy::U128 => "u128", } } pub fn float_ty_to_string(ty: FloatTy) -> &'static str { match ty { FloatTy::F32 => "f32", FloatTy::F64 => "f64", } } pub(super) fn int_ty_from_builtin(t: BuiltinInt) -> IntTy { match t { BuiltinInt::Isize => IntTy::Isize, BuiltinInt::I8 => IntTy::I8, BuiltinInt::I16 => IntTy::I16, BuiltinInt::I32 => IntTy::I32, BuiltinInt::I64 => IntTy::I64, BuiltinInt::I128 => IntTy::I128, } } pub(super) fn uint_ty_from_builtin(t: BuiltinUint) -> UintTy { match t { BuiltinUint::Usize => UintTy::Usize, BuiltinUint::U8 => UintTy::U8, BuiltinUint::U16 => UintTy::U16, BuiltinUint::U32 => UintTy::U32, BuiltinUint::U64 => UintTy::U64, BuiltinUint::U128 => UintTy::U128, } } pub(super) fn float_ty_from_builtin(t: BuiltinFloat) -> FloatTy { match t { BuiltinFloat::F32 => FloatTy::F32, BuiltinFloat::F64 => FloatTy::F64, } }