628f5d29c3
The two main sub-modules, `c_str` and `os_str`, have now had some time to bake in the standard library. This commits performs a sweep over the modules adding various stability tags. The following APIs are now marked `#[stable]` * `OsString` * `OsStr` * `OsString::from_string` * `OsString::from_str` * `OsString::new` * `OsString::into_string` * `OsString::push` (renamed from `push_os_str`, added an `AsOsStr` bound) * various trait implementations for `OsString` * `OsStr::from_str` * `OsStr::to_str` * `OsStr::to_string_lossy` * `OsStr::to_os_string` * various trait implementations for `OsStr` * `CString` * `CStr` * `NulError` * `CString::new` - this API's implementation may change as a result of rust-lang/rfcs#912 but the usage of `CString::new(thing)` looks like it is unlikely to change. Additionally, the `IntoBytes` bound is also likely to change but the set of implementors for the trait will not change (despite the trait perhaps being renamed). * `CString::from_vec_unchecked` * `CString::as_bytes` * `CString::as_bytes_with_nul` * `NulError::nul_position` * `NulError::into_vec` * `CStr::from_ptr` * `CStr::as_ptr` * `CStr::to_bytes` * `CStr::to_bytes_with_nul` * various trait implementations for `CStr` The following APIs remain `#[unstable]` * `OsStr*Ext` traits remain unstable as the organization of `os::platform` is uncertain still and the traits may change location. * `AsOsStr` remains unstable as generic conversion traits are likely to be rethought soon. The following APIs were deprecated * `OsString::push_os_str` is now called `push` and takes `T: AsOsStr` instead (a superset of the previous functionality).
38 lines
1.2 KiB
Rust
38 lines
1.2 KiB
Rust
// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
|
|
// file at the top-level directory of this distribution and at
|
|
// http://rust-lang.org/COPYRIGHT.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
|
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
|
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
|
// option. This file may not be copied, modified, or distributed
|
|
// except according to those terms.
|
|
|
|
//! Utilities related to FFI bindings.
|
|
|
|
#![stable(feature = "rust1", since = "1.0.0")]
|
|
|
|
#[stable(feature = "rust1", since = "1.0.0")]
|
|
pub use self::c_str::{CString, CStr};
|
|
pub use self::c_str::{NulError, IntoBytes};
|
|
#[allow(deprecated)]
|
|
pub use self::c_str::c_str_to_bytes;
|
|
#[allow(deprecated)]
|
|
pub use self::c_str::c_str_to_bytes_with_nul;
|
|
|
|
#[stable(feature = "rust1", since = "1.0.0")]
|
|
pub use self::os_str::OsString;
|
|
#[stable(feature = "rust1", since = "1.0.0")]
|
|
pub use self::os_str::OsStr;
|
|
|
|
mod c_str;
|
|
mod os_str;
|
|
|
|
// FIXME (#21670): these should be defined in the os_str module
|
|
/// Freely convertible to an `&OsStr` slice.
|
|
#[unstable(feature = "std_misc")]
|
|
pub trait AsOsStr {
|
|
/// Convert to an `&OsStr` slice.
|
|
fn as_os_str(&self) -> &OsStr;
|
|
}
|