]> git.lizzy.rs Git - rust.git/blob - crates/hir-ty/src/primitive.rs
:arrow_up: rust-analyzer
[rust.git] / crates / hir-ty / src / primitive.rs
1 //! A few helper functions for dealing with primitives.
2
3 pub use chalk_ir::{FloatTy, IntTy, UintTy};
4 pub use hir_def::builtin_type::{BuiltinFloat, BuiltinInt, BuiltinUint};
5
6 pub fn int_ty_to_string(ty: IntTy) -> &'static str {
7     match ty {
8         IntTy::Isize => "isize",
9         IntTy::I8 => "i8",
10         IntTy::I16 => "i16",
11         IntTy::I32 => "i32",
12         IntTy::I64 => "i64",
13         IntTy::I128 => "i128",
14     }
15 }
16
17 pub fn uint_ty_to_string(ty: UintTy) -> &'static str {
18     match ty {
19         UintTy::Usize => "usize",
20         UintTy::U8 => "u8",
21         UintTy::U16 => "u16",
22         UintTy::U32 => "u32",
23         UintTy::U64 => "u64",
24         UintTy::U128 => "u128",
25     }
26 }
27
28 pub fn float_ty_to_string(ty: FloatTy) -> &'static str {
29     match ty {
30         FloatTy::F32 => "f32",
31         FloatTy::F64 => "f64",
32     }
33 }
34
35 pub(super) fn int_ty_from_builtin(t: BuiltinInt) -> IntTy {
36     match t {
37         BuiltinInt::Isize => IntTy::Isize,
38         BuiltinInt::I8 => IntTy::I8,
39         BuiltinInt::I16 => IntTy::I16,
40         BuiltinInt::I32 => IntTy::I32,
41         BuiltinInt::I64 => IntTy::I64,
42         BuiltinInt::I128 => IntTy::I128,
43     }
44 }
45
46 pub(super) fn uint_ty_from_builtin(t: BuiltinUint) -> UintTy {
47     match t {
48         BuiltinUint::Usize => UintTy::Usize,
49         BuiltinUint::U8 => UintTy::U8,
50         BuiltinUint::U16 => UintTy::U16,
51         BuiltinUint::U32 => UintTy::U32,
52         BuiltinUint::U64 => UintTy::U64,
53         BuiltinUint::U128 => UintTy::U128,
54     }
55 }
56
57 pub(super) fn float_ty_from_builtin(t: BuiltinFloat) -> FloatTy {
58     match t {
59         BuiltinFloat::F32 => FloatTy::F32,
60         BuiltinFloat::F64 => FloatTy::F64,
61     }
62 }