userspace/file/traits/
readable.rs1pub trait Readable<Origin> {
2 type Origin;
3 fn read_from_path(path: &str, offset: usize, endianness: bool) -> Self;
4 fn read_from_descriptor(file_descriptor: isize, offset: usize, endianness: bool) -> Self;
5 fn read_from_pointer(ptr: *const u8, offset: usize, endianness: bool) -> Self;
6}
7
8impl<U> Readable<crate::Origin> for U
9where
10 U: ample::traits::Bytes<crate::Origin, crate::Origin>,
11 U: Default,
12{
13 type Origin = crate::Origin;
14
15 fn read_from_path(path: &str, offset: usize, endianness: bool) -> Self {
16 let file_descriptor = crate::file::open(path);
17 Self::read_from_descriptor(file_descriptor, offset, endianness)
18 }
19
20 fn read_from_descriptor(file_descriptor: isize, offset: usize, endianness: bool) -> Self
21 where
22 Self: ample::traits::Bytes<crate::Origin, crate::Origin>, {
24 Self::default()
32 }
33
34 fn read_from_pointer(ptr: *const u8, offset: usize, endianness: bool) -> Self {
35 Self::default()
36 }
37}
38
39impl<A> Readable<ample::Origin> for A
40where
41 A: crate::traits::Ample,
42 A: Default,
43{
44 type Origin = ample::Origin;
45
46 fn read_from_path(path: &str, offset: usize, endianness: bool) -> Self {
47 Self::default()
48 }
49
50 fn read_from_descriptor(fd: isize, offset: usize, endianness: bool) -> Self {
51 Self::default()
52 }
53
54 fn read_from_pointer(ptr: *const u8, offset: usize, endianness: bool) -> Self {
55 Self::default()
56 }
57}