If you want to get a nul-terminated &[u8] slice, you can use the CString::as_bytes_with_nul method.
Whether you get a slice that ends with or without a nul terminator, you albania whatsapp number data 5 million can call the slice's as_ptr method to get a read-only raw pointer to pass to an external function. For a discussion on how to ensure the lifetime of a raw pointer, see the documentation for that function.
OsString and &OsStr
OsString is a string type that can represent its own, mutable platform-native strings, but can be converted to and from Rust strings cheaply.
On Unix systems, strings are usually arbitrary sequences of non-zero bytes, interpreted as UTF-8 in many cases.
On Windows, a string is typically any sequence of non-zero 16-bit values, interpreted as UTF-16 when valid.
In Rust, strings are always valid UTF-8, which may contain zeros.
OsString and [OsStr] bridge this gap by representing both Rust and platform-native string values, and in particular by allowing Rust strings to be converted to "OS" strings where possible. A consequence of this is that OsString instances are not NUL-terminated; for passing to e.g. Unix system calls, you should create a CStr instead.
The relationship between OsString and &OsStr is the same as the relationship between String and &str: the first string in each pair is the owned string; the second is the borrowed reference data.

Note that OsString and [OsStr] do not necessarily store strings in a platform-native form !
On Unix, strings are stored as a sequence of 8-bit values, while on Windows, strings are based on 16-bit values, and as discussed earlier, strings are actually stored as a sequence of 8-bit values, encoded in a less strict variant of UTF-8. This helps to understand when dealing with capacity and length values.