1cdb3e2c8Sopenharmony_ci# OsStr Bytes 2cdb3e2c8Sopenharmony_ci 3cdb3e2c8Sopenharmony_ciThis crate allows interacting with the data stored by [`OsStr`] and 4cdb3e2c8Sopenharmony_ci[`OsString`], without resorting to panics or corruption for invalid UTF-8. 5cdb3e2c8Sopenharmony_ciThus, methods can be used that are already defined on [`[u8]`][slice] and 6cdb3e2c8Sopenharmony_ci[`Vec<u8>`]. 7cdb3e2c8Sopenharmony_ci 8cdb3e2c8Sopenharmony_ciTypically, the only way to losslessly construct [`OsStr`] or [`OsString`] from 9cdb3e2c8Sopenharmony_cia byte sequence is to use `OsStr::new(str::from_utf8(bytes)?)`, which requires 10cdb3e2c8Sopenharmony_cithe bytes to be valid in UTF-8. However, since this crate makes conversions 11cdb3e2c8Sopenharmony_cidirectly between the platform encoding and raw bytes, even some strings invalid 12cdb3e2c8Sopenharmony_ciin UTF-8 can be converted. 13cdb3e2c8Sopenharmony_ci 14cdb3e2c8Sopenharmony_ci[](https://github.com/dylni/os_str_bytes/actions?query=branch%3Amaster) 15cdb3e2c8Sopenharmony_ci 16cdb3e2c8Sopenharmony_ci## Usage 17cdb3e2c8Sopenharmony_ci 18cdb3e2c8Sopenharmony_ciAdd the following lines to your "Cargo.toml" file: 19cdb3e2c8Sopenharmony_ci 20cdb3e2c8Sopenharmony_ci```toml 21cdb3e2c8Sopenharmony_ci[dependencies] 22cdb3e2c8Sopenharmony_cios_str_bytes = "6.4" 23cdb3e2c8Sopenharmony_ci``` 24cdb3e2c8Sopenharmony_ci 25cdb3e2c8Sopenharmony_ciSee the [documentation] for available functionality and examples. 26cdb3e2c8Sopenharmony_ci 27cdb3e2c8Sopenharmony_ci## Rust version support 28cdb3e2c8Sopenharmony_ci 29cdb3e2c8Sopenharmony_ciThe minimum supported Rust toolchain version depends on the platform: 30cdb3e2c8Sopenharmony_ci 31cdb3e2c8Sopenharmony_ci<table> 32cdb3e2c8Sopenharmony_ci <tr> 33cdb3e2c8Sopenharmony_ci <th>Target</th> 34cdb3e2c8Sopenharmony_ci <th>Target Triple</th> 35cdb3e2c8Sopenharmony_ci <th>Minimum Version</th> 36cdb3e2c8Sopenharmony_ci </tr> 37cdb3e2c8Sopenharmony_ci <tr> 38cdb3e2c8Sopenharmony_ci <td>Fortanix</td> 39cdb3e2c8Sopenharmony_ci <td><code>*-fortanix-*-sgx</code></td> 40cdb3e2c8Sopenharmony_ci <td>nightly (<a href="https://doc.rust-lang.org/unstable-book/library-features/sgx-platform.html"><code>sgx_platform</code></a>)</td> 41cdb3e2c8Sopenharmony_ci </tr> 42cdb3e2c8Sopenharmony_ci <tr> 43cdb3e2c8Sopenharmony_ci <td>HermitCore</td> 44cdb3e2c8Sopenharmony_ci <td><code>*-*-hermit</code></td> 45cdb3e2c8Sopenharmony_ci <td>1.57.0</td> 46cdb3e2c8Sopenharmony_ci </tr> 47cdb3e2c8Sopenharmony_ci <tr> 48cdb3e2c8Sopenharmony_ci <td>SOLID</td> 49cdb3e2c8Sopenharmony_ci <td><code>*-*-solid_asp3(-*)</code></td> 50cdb3e2c8Sopenharmony_ci <td>1.57.0</td> 51cdb3e2c8Sopenharmony_ci </tr> 52cdb3e2c8Sopenharmony_ci <tr> 53cdb3e2c8Sopenharmony_ci <td>Unix</td> 54cdb3e2c8Sopenharmony_ci <td>Unix</td> 55cdb3e2c8Sopenharmony_ci <td>1.57.0</td> 56cdb3e2c8Sopenharmony_ci </tr> 57cdb3e2c8Sopenharmony_ci <tr> 58cdb3e2c8Sopenharmony_ci <td>WASI</td> 59cdb3e2c8Sopenharmony_ci <td><code>*-wasi</code></td> 60cdb3e2c8Sopenharmony_ci <td>1.57.0</td> 61cdb3e2c8Sopenharmony_ci </tr> 62cdb3e2c8Sopenharmony_ci <tr> 63cdb3e2c8Sopenharmony_ci <td>WebAssembly</td> 64cdb3e2c8Sopenharmony_ci <td><code>wasm32-*-unknown</code></td> 65cdb3e2c8Sopenharmony_ci <td>1.57.0</td> 66cdb3e2c8Sopenharmony_ci </tr> 67cdb3e2c8Sopenharmony_ci <tr> 68cdb3e2c8Sopenharmony_ci <td>Windows</td> 69cdb3e2c8Sopenharmony_ci <td><code>*-*-windows-*</code></td> 70cdb3e2c8Sopenharmony_ci <td>1.57.0</td> 71cdb3e2c8Sopenharmony_ci </tr> 72cdb3e2c8Sopenharmony_ci <tr> 73cdb3e2c8Sopenharmony_ci <td>Xous</td> 74cdb3e2c8Sopenharmony_ci <td><code>*-*-xous-*</code></td> 75cdb3e2c8Sopenharmony_ci <td>unstable</td> 76cdb3e2c8Sopenharmony_ci </tr> 77cdb3e2c8Sopenharmony_ci</table> 78cdb3e2c8Sopenharmony_ci 79cdb3e2c8Sopenharmony_ciMinor version updates may increase these version requirements. However, the 80cdb3e2c8Sopenharmony_ciprevious two Rust releases will always be supported. If the minimum Rust 81cdb3e2c8Sopenharmony_civersion must not be increased, use a tilde requirement to prevent updating this 82cdb3e2c8Sopenharmony_cicrate's minor version: 83cdb3e2c8Sopenharmony_ci 84cdb3e2c8Sopenharmony_ci```toml 85cdb3e2c8Sopenharmony_ci[dependencies] 86cdb3e2c8Sopenharmony_cios_str_bytes = "~6.4" 87cdb3e2c8Sopenharmony_ci``` 88cdb3e2c8Sopenharmony_ci 89cdb3e2c8Sopenharmony_ci## License 90cdb3e2c8Sopenharmony_ci 91cdb3e2c8Sopenharmony_ciLicensing terms are specified in [COPYRIGHT]. 92cdb3e2c8Sopenharmony_ci 93cdb3e2c8Sopenharmony_ciUnless you explicitly state otherwise, any contribution submitted for inclusion 94cdb3e2c8Sopenharmony_ciin this crate, as defined in [LICENSE-APACHE], shall be licensed according to 95cdb3e2c8Sopenharmony_ci[COPYRIGHT], without any additional terms or conditions. 96cdb3e2c8Sopenharmony_ci 97cdb3e2c8Sopenharmony_ci[COPYRIGHT]: https://github.com/dylni/os_str_bytes/blob/master/COPYRIGHT 98cdb3e2c8Sopenharmony_ci[documentation]: https://docs.rs/os_str_bytes 99cdb3e2c8Sopenharmony_ci[LICENSE-APACHE]: https://github.com/dylni/os_str_bytes/blob/master/LICENSE-APACHE 100cdb3e2c8Sopenharmony_ci[slice]: https://doc.rust-lang.org/std/primitive.slice.html 101cdb3e2c8Sopenharmony_ci[`OsStr`]: https://doc.rust-lang.org/std/ffi/struct.OsStr.html 102cdb3e2c8Sopenharmony_ci[`OsString`]: https://doc.rust-lang.org/std/ffi/struct.OsString.html 103cdb3e2c8Sopenharmony_ci[`Vec<u8>`]: https://doc.rust-lang.org/std/vec/struct.Vec.html 104