1#[derive(Debug, Clone, Copy, PartialEq, Eq)]
5pub enum FileDescriptor {
6 StdIn,
8 StdOut,
10 StdErr,
12 HintRead,
14 HintWrite,
16 PreimageRead,
18 PreimageWrite,
20}
21
22impl From<FileDescriptor> for usize {
23 fn from(fd: FileDescriptor) -> Self {
24 match fd {
25 FileDescriptor::StdIn => 0,
26 FileDescriptor::StdOut => 1,
27 FileDescriptor::StdErr => 2,
28 FileDescriptor::HintRead => 3,
29 FileDescriptor::HintWrite => 4,
30 FileDescriptor::PreimageRead => 5,
31 FileDescriptor::PreimageWrite => 6,
32 }
33 }
34}
35
36impl From<FileDescriptor> for i32 {
37 fn from(fd: FileDescriptor) -> Self {
38 usize::from(fd) as Self
39 }
40}
41
42#[cfg(test)]
43mod tests {
44 use super::*;
45
46 #[test]
47 fn test_file_descriptor_into_usize() {
48 assert_eq!(usize::from(FileDescriptor::StdIn), 0);
49 assert_eq!(usize::from(FileDescriptor::StdOut), 1);
50 assert_eq!(usize::from(FileDescriptor::StdErr), 2);
51 assert_eq!(usize::from(FileDescriptor::HintRead), 3);
52 assert_eq!(usize::from(FileDescriptor::HintWrite), 4);
53 assert_eq!(usize::from(FileDescriptor::PreimageRead), 5);
54 assert_eq!(usize::from(FileDescriptor::PreimageWrite), 6);
55 }
56
57 #[test]
58 fn test_file_descriptor_into_i32() {
59 assert_eq!(i32::from(FileDescriptor::StdIn), 0);
60 assert_eq!(i32::from(FileDescriptor::StdOut), 1);
61 assert_eq!(i32::from(FileDescriptor::StdErr), 2);
62 assert_eq!(i32::from(FileDescriptor::HintRead), 3);
63 assert_eq!(i32::from(FileDescriptor::HintWrite), 4);
64 assert_eq!(i32::from(FileDescriptor::PreimageRead), 5);
65 assert_eq!(i32::from(FileDescriptor::PreimageWrite), 6);
66 }
67}