Expand description
§unixstring

UnixString
is an FFI-friendly null-terminated byte string that may be constructed from a String
, a CString
, a PathBuf
, an OsString
or a collection of bytes.
An UnixString
can then be converted into a slice of CStr
, Path
or OsStr
in infallible and zero-cost operations.
§Why?
UnixString
aims to be useful in any scenario where you’d like to use FFI (specially with C) on Unix systems.
If you have a PathBuf
, for example, you can send that data to a libc
function, such as stat
, but you’d have to first allocate a CString
(or something analogous) to do so.
The same is true with OsString
and String
because these three types are allowed to have internal zero bytes and are not null-terminated.
A UnixString
is very close to what a CString
is but with increased flexibility and usability. A CString
cannot be changed or increased after instantited, while UnixString
is growable through its push
and push_bytes
methods, somewhat similar to OsString
.
A CString
also does not have direct reference conversions to anything but &[u8]
or &CStr
, while UnixString
has those and more (described below).
§Obtaining references from an UnixString
Into | Function | Notes |
---|---|---|
&CStr | UnixString::as_c_str | Available through AsRef as well |
&Path | UnixString::as_path | Available through AsRef as well |
&str | UnixString::as_str | Fails if the bytes of the UnixString aren’t valid UTF-8 |
&[u8] | UnixString::as_bytes | Returns the bytes of the UnixString without the null terminator |
&[u8] | UnixString::as_bytes_with_nul | Returns the bytes of the UnixString with the null terminator |
&OsStr | UnixString::as_os_str | Available through AsRef as well |
* const c_char | UnixString::as_ptr |
§Creating an UnixString
From | Potential failure | Trait impl | Function |
---|---|---|---|
CString | Infallible | From | UnixString::from_cstring |
PathBuf | Fails if contains an interior zero byte | TryFrom | UnixString::from_pathbuf |
String | Fails if contains an interior zero byte | TryFrom | UnixString::from_string |
Vec<u8> | Fails if contains an interior zero byte | TryFrom | UnixString::from_bytes |
OsString | Fails if contains an interior zero byte | TryFrom | UnixString::from_os_string |
* const c_char | Unsafe, see the docs for more info | None | UnixString::from_ptr |
§Converting from an UnixString
Into | Function | Notes |
---|---|---|
CString | UnixString::into_cstring | |
PathBuf | UnixString::into_pathbuf | |
OsString | UnixString::into_os_string | |
String | UnixString::into_string | Fails if the UnixString ’s bytes are not valid UTF-8 |
String | UnixString::into_string_lossy | |
String | UnixString::to_string_lossy | Non-moving version of UnixString::into_string_lossy |
String | UnixString::into_string_unchecked | Unsafe: creates a String without checking if the bytes are valid UTF-8 |
Vec<u8> | UnixString::into_bytes | Returns the bytes of the UnixString without the null terminator |
Vec<u8> | UnixString::into_bytes_with_nul | Returns the bytes of the UnixString with the null terminator |
All of the above are also available through .into()
.
Structs§
- Unix
String - An FFI-friendly null-terminated byte string.
Enums§
- Error
- An error enum that encapsulates all possible errors in this crate.