Skip to main content

shelter_fs/
lib.rs

1//! shelter-fs is a zero-details, privacy-focused file system.
2//!
3//! It keeps your app files securely, privately and reliably on underlying
4//! storages. By encapsulating files and directories into an encrypted
5//! repository, it provides a virtual file system and exclusive access to
6//! the authorised application.
7//!
8//! The most core parts of this module are [`Repo`] and [`File`], which provides
9//! most API for file system operations and file data I/O.
10//!
11//! - [`Repo`] provides similar file system manipulation methods to [`std::fs`]
12//! - [`File`] provides similar file I/O methods to [`std::fs::File`]
13//!
14//! # Examples
15//!
16//! Create and open a [`Repository`] using memory as underlying storage.
17//!
18//! TODO[epic=doc,seq=21] Intro documentation
19//!
20//! [`std::fs`]: https://doc.rust-lang.org/std/fs/index.html
21//! [`std::fs::File`]: https://doc.rust-lang.org/std/fs/struct.File.html
22//! [`Read`]: https://doc.rust-lang.org/std/io/trait.Read.html
23//! [`Write`]: https://doc.rust-lang.org/std/io/trait.Write.html
24//! [`Path`]: https://doc.rust-lang.org/std/path/struct.Path.html
25//! [`PathBuf`]: https://doc.rust-lang.org/std/path/struct.PathBuf.html
26//! [`Repo`]: struct.Repo.html
27//! [`File`]: struct.File.html
28
29#![forbid(unsafe_code)]
30// #![warn(missing_debug_implementations)]
31// #![deny(missing_docs)]
32
33#[macro_use]
34extern crate bitflags;
35extern crate camino;
36extern crate crdt_tree;
37extern crate data_encoding;
38extern crate fast_cdc;
39// extern crate machine_uid;
40extern crate orion;
41extern crate serde;
42extern crate serde_derive;
43extern crate serde_with;
44extern crate shelter_block;
45extern crate shelter_storage;
46extern crate thiserror;
47
48mod error;
49mod filesystem;
50mod repository;
51mod time;
52
53// External API
54pub use error::Error;
55pub use filesystem::FileSystemOptions;
56pub use repository::Repository;