s3-path
Construct safe S3 keys (informally named paths in this library).
This library only allows the following characters to be used in path components:
[a..z], [A..Z], [0..9], -, _, .
The following path components are explicitly forbidden to avoid any path traversal when the S3 key is used as a
filesystem path:
Usage
use assertr::prelude::*;
use s3_path::{s3_path_buf, S3Path, S3PathBuf};
fn create_an_owned_path() {
let path = s3_path_buf!("foo", String::from("bar")).unwrap();
assert_that(path).has_display_value("foo/bar");
let path = S3PathBuf::try_from(["foo", "bar"]).unwrap();
assert_that(path).has_display_value("foo/bar");
let path = S3PathBuf::try_from_str("foo/bar").unwrap();
assert_that(path).has_display_value("foo/bar");
let mut path = S3PathBuf::new();
path.join("foo").unwrap();
path.join("bar").unwrap();
assert_that(path).has_display_value("foo/bar");
}
fn create_a_borrowed_path() {
let path = s3_path!("foo", "bar").unwrap();
assert_that(path).has_display_value("foo/bar");
let path = S3Path::new([Cow::Borrowed("foo"), Cow::Borrowed("bar")]).unwrap();
assert_that(path).has_display_value("foo/bar");
let path = s3_path_buf!("foo", "bar").unwrap();
let borrowed: &S3Path<'_> = path.as_path();
assert_that(borrowed).has_display_value("foo/bar");
assert_that(&path).is_equal_to(borrowed);
}
Linting
cargo clippy -- -Dclippy::all -Dclippy::pedantic
TODO