osom_encoders_x86_64/models/
immediate8.rs1#![allow(clippy::cast_sign_loss, clippy::cast_possible_wrap)]
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
5#[repr(transparent)]
6#[must_use]
7pub struct Immediate8 {
8 value: u8,
9}
10
11impl Immediate8 {
12 #[inline(always)]
13 pub const fn from_u8(value: u8) -> Self {
14 Self { value }
15 }
16
17 #[inline(always)]
18 pub const fn from_i8(value: i8) -> Self {
19 Self { value: value as u8 }
20 }
21
22 #[inline(always)]
23 #[must_use]
24 pub const fn as_u8(self) -> u8 {
25 self.value
26 }
27
28 #[inline(always)]
29 #[must_use]
30 pub const fn as_i8(self) -> i8 {
31 self.value as i8
32 }
33
34 #[inline(always)]
35 #[must_use]
36 pub const fn encode(self) -> [u8; 1] {
37 [self.value]
38 }
39
40 #[inline(always)]
41 #[must_use]
42 pub const fn equals(self, other: Self) -> bool {
43 self.as_u8() == other.as_u8()
44 }
45}
46
47impl From<u8> for Immediate8 {
48 fn from(value: u8) -> Self {
49 Self::from_u8(value)
50 }
51}
52
53impl From<Immediate8> for u8 {
54 fn from(value: Immediate8) -> Self {
55 value.as_u8()
56 }
57}
58
59impl From<i8> for Immediate8 {
60 fn from(value: i8) -> Self {
61 Self::from_i8(value)
62 }
63}
64
65impl From<Immediate8> for i8 {
66 fn from(value: Immediate8) -> Self {
67 value.as_i8()
68 }
69}