| Crates.io | simple-fs |
| lib.rs | simple-fs |
| version | 0.7.3 |
| created_at | 2023-12-27 19:25:29.818297+00 |
| updated_at | 2025-09-08 01:08:33.994825+00 |
| description | Simple and convenient API for File System access |
| homepage | https://github.com/jeremychone/rust-simple-fs |
| repository | https://github.com/jeremychone/rust-simple-fs |
| max_upload_size | |
| id | 1081826 |
| size | 181,841 |
simple-fs is a crate that provides a set of convenient and common file APIs built on std::fs, walkdir, and globset.
simple-fs operates under the assumption that paths that are not utf8 are not visible to the API, simplifying many of the path-related APIs.
The main construct of simple-fs is the SPath structure, which contains a Utf8PathBuf and ensures the following:
/ (no \), and redundant // or /./ are collapsed to one ./.\\?\ on Windows.The SFile is a File struct that contains a SPath.
By applying the above rules, path/file APIs can be drastically simplified, and both structs offer many Path functions, with &str as the return type.
This crate also offers a simple and scalable way to list or iterate on files, given a glob:
iter_files(dir, include_globs: Option<&[&str]>, list_options: Option<ListOptions>) -> Result<impl Iter SFile>list_files(dir, include_globs: Option<&[&str]>, list_options: Option<ListOptions>) -> Result<Vec<SFile>>ensure_dir(dir_path) make sure all the dir paths are created.ensure_file_dir(file_path) makes sure the file directory exists.The crate also includes other convenient, common APIs:
read_to_string, which reports the file path if not found.get_buf_reader, which also reports the file path if not found or in case of an error.For more control, it is recommended to use std::fs, walkdir, globset, and other crates directly.
This is a very early implementation, with more to come.
Happy coding!
| Feature | Functions Included |
|---|---|
with-json |
load_json, save_json, save_json_pretty |
with-toml |
load_toml, save_toml |
bin-nums |
save_be_f64, load_be_f64, save_le_f64, ... |
full |
All the above. |
| default | None of the above. See below. |
0.6.x (rc for now)
..std_path.. naming./ and remove redundant // and /./)SPath/SFile.! deprecate '.to_str()' now '.as_str()'! .diff(..) - Now take AsRef Utf8Path, return Option+ Add collapse, into_collapsed, is_collapsed, try_collapse! .clean(..) is replaced by .collapse()+ list/iter files/dirs - add support for negative glob patterns in include_globs (convenience)! API CHANGE - now all default to Utf8Path (from camino crate). std_path...() for the std path^ sfile/spath - add is_absolute/is_relative passthrough0.5.0
0.4.0
notify 8 (should not have any API changes)SPath::from(&str/&String,String) (no need for try_from)0.3.1 from 0.3.0
list/iter files.
* was traversing into subfolders /, which was not the intended behavior.0.3.1, it uses the glob literal_separator = true, so it won't descend further.*.rs to list direct descendants and **/*.rs for nested files.dir given in the list; otherwise, set ListOptions.relative_glob = true to make it relative.0.3.x from 0.2.x
0.2.0 from 0.1.x