ayaka_bindings_types/
fs.rs1use std::io::SeekFrom;
2
3use serde::{Deserialize, Serialize};
4use vfs::*;
5
6#[derive(Debug, Clone, Copy, PartialEq, Eq, Deserialize, Serialize)]
8pub enum FileType {
9 File,
11 Dir,
13}
14
15impl From<VfsFileType> for FileType {
16 fn from(value: VfsFileType) -> Self {
17 match value {
18 VfsFileType::File => Self::File,
19 VfsFileType::Directory => Self::Dir,
20 }
21 }
22}
23
24impl From<FileType> for VfsFileType {
25 fn from(value: FileType) -> Self {
26 match value {
27 FileType::File => Self::File,
28 FileType::Dir => Self::Directory,
29 }
30 }
31}
32
33#[derive(Debug, Deserialize, Serialize)]
35pub struct FileMetadata {
36 pub file_type: FileType,
38 pub len: u64,
40}
41
42impl From<VfsMetadata> for FileMetadata {
43 fn from(value: VfsMetadata) -> Self {
44 Self {
45 file_type: value.file_type.into(),
46 len: value.len,
47 }
48 }
49}
50
51impl From<FileMetadata> for VfsMetadata {
52 fn from(value: FileMetadata) -> Self {
53 Self {
54 file_type: value.file_type.into(),
55 len: value.len,
56 }
57 }
58}
59
60#[derive(Debug, Clone, Copy, PartialEq, Eq, Deserialize, Serialize)]
62pub enum FileSeekFrom {
63 Start(u64),
65 End(i64),
67 Current(i64),
69}
70
71impl From<SeekFrom> for FileSeekFrom {
72 fn from(value: SeekFrom) -> Self {
73 match value {
74 SeekFrom::Start(p) => Self::Start(p),
75 SeekFrom::End(p) => Self::End(p),
76 SeekFrom::Current(p) => Self::Current(p),
77 }
78 }
79}
80
81impl From<FileSeekFrom> for SeekFrom {
82 fn from(value: FileSeekFrom) -> Self {
83 match value {
84 FileSeekFrom::Start(p) => Self::Start(p),
85 FileSeekFrom::End(p) => Self::End(p),
86 FileSeekFrom::Current(p) => Self::Current(p),
87 }
88 }
89}