Skip to main content

floreum_parser/
metadata.rs

1use serde::{Deserialize, Serialize};
2#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
3pub enum FileType {
4    File,
5    Dir,
6}
7#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
8pub enum SeekFrom {
9    Start(u64),
10    End(i64),
11    Current(i64),
12}
13#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
14pub struct OpenOptions {
15    pub read: bool,
16    pub write: bool,
17    pub append: bool,
18    pub truncate: bool,
19    pub create: bool,
20    pub create_new: bool,
21}
22#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize, Default)]
23pub struct Permit {
24    pub read: bool,
25    pub write: bool,
26    pub append: bool,
27    pub permit: bool,
28    pub read_times: bool,
29    pub write_times: bool,
30    pub link: bool,
31}
32#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
33pub struct Timestamp {
34    pub secs: i64,
35    pub nanos: u32,
36}
37#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
38pub struct Metadata {
39    pub permit: Permit,
40    pub file_type: FileType,
41    pub length: u64,
42    pub accessed: Option<Timestamp>,
43    pub modified: Option<Timestamp>,
44    pub created: Option<Timestamp>,
45}
46#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
47pub struct Entry<N: AsRef<str>> {
48    pub metadata: Metadata,
49    pub name: N,
50}