# OsStr Bytes This crate allows interacting with the data stored by [`OsStr`] and [`OsString`], without resorting to panics or corruption for invalid UTF-8. Thus, methods can be used that are already defined on [`[u8]`][slice] and [`Vec`]. Typically, the only way to losslessly construct [`OsStr`] or [`OsString`] from a byte sequence is to use `OsStr::new(str::from_utf8(bytes)?)`, which requires the bytes to be valid in UTF-8. However, since this crate makes conversions directly between the platform encoding and raw bytes, even some strings invalid in UTF-8 can be converted. [![GitHub Build Status](https://github.com/dylni/os_str_bytes/workflows/build/badge.svg?branch=master)](https://github.com/dylni/os_str_bytes/actions?query=branch%3Amaster) ## Usage Add the following lines to your "Cargo.toml" file: ```toml [dependencies] os_str_bytes = "6.4" ``` See the [documentation] for available functionality and examples. ## Rust version support The minimum supported Rust toolchain version depends on the platform:
Target Target Triple Minimum Version
Fortanix *-fortanix-*-sgx nightly (sgx_platform)
HermitCore *-*-hermit 1.57.0
SOLID *-*-solid_asp3(-*) 1.57.0
Unix Unix 1.57.0
WASI *-wasi 1.57.0
WebAssembly wasm32-*-unknown 1.57.0
Windows *-*-windows-* 1.57.0
Xous *-*-xous-* unstable
Minor version updates may increase these version requirements. However, the previous two Rust releases will always be supported. If the minimum Rust version must not be increased, use a tilde requirement to prevent updating this crate's minor version: ```toml [dependencies] os_str_bytes = "~6.4" ``` ## License Licensing terms are specified in [COPYRIGHT]. Unless you explicitly state otherwise, any contribution submitted for inclusion in this crate, as defined in [LICENSE-APACHE], shall be licensed according to [COPYRIGHT], without any additional terms or conditions. [COPYRIGHT]: https://github.com/dylni/os_str_bytes/blob/master/COPYRIGHT [documentation]: https://docs.rs/os_str_bytes [LICENSE-APACHE]: https://github.com/dylni/os_str_bytes/blob/master/LICENSE-APACHE [slice]: https://doc.rust-lang.org/std/primitive.slice.html [`OsStr`]: https://doc.rust-lang.org/std/ffi/struct.OsStr.html [`OsString`]: https://doc.rust-lang.org/std/ffi/struct.OsString.html [`Vec`]: https://doc.rust-lang.org/std/vec/struct.Vec.html