ffi.rs.html -- source
Description: Source to the Rust file `src/libstd/sys/unix/ext/ffi.rs`.
Keywords: rust, rustlang, rust-lang

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61

    // 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.

    //! Unix-specific extension to the primitives in the `std::ffi` module

    #![stable(feature = "rust1", since = "1.0.0")]

    use ffi::{OsStr, OsString};
    use mem;
    use sys::os_str::Buf;
    use sys_common::{FromInner, IntoInner, AsInner};

    /// Unix-specific extensions to `OsString`.
    #[stable(feature = "rust1", since = "1.0.0")]
    pub trait OsStringExt {
        /// Creates an `OsString` from a byte vector.
        #[stable(feature = "rust1", since = "1.0.0")]
        fn from_vec(vec: Vec<u8>) -> Self;

        /// Yields the underlying byte vector of this `OsString`.
        #[stable(feature = "rust1", since = "1.0.0")]
        fn into_vec(self) -> Vec<u8>;
    }

    #[stable(feature = "rust1", since = "1.0.0")]
    impl OsStringExt for OsString {
        fn from_vec(vec: Vec<u8>) -> OsString {
            FromInner::from_inner(Buf { inner: vec })
        }
        fn into_vec(self) -> Vec<u8> {
            self.into_inner().inner
        }
    }

    /// Unix-specific extensions to `OsStr`.
    #[stable(feature = "rust1", since = "1.0.0")]
    pub trait OsStrExt {
        #[stable(feature = "rust1", since = "1.0.0")]
        fn from_bytes(slice: &[u8]) -> &Self;

        /// Gets the underlying byte view of the `OsStr` slice.
        #[stable(feature = "rust1", since = "1.0.0")]
        fn as_bytes(&self) -> &[u8];
    }

    #[stable(feature = "rust1", since = "1.0.0")]
    impl OsStrExt for OsStr {
        fn from_bytes(slice: &[u8]) -> &OsStr {
            unsafe { mem::transmute(slice) }
        }
        fn as_bytes(&self) -> &[u8] {
            &self.as_inner().inner
        }
    }

# Help

## Keyboard Shortcuts

?
  Show this help dialog
S
  Focus the search field
⇤
  Move up in search results
⇥
  Move down in search results
⏎
  Go to active search result
+
  Collapse/expand all sections

## Search Tricks

Prefix searches with a type followed by a colon (e.g. `fn:`) to restrict the search to a given type.

Accepted types are: `fn`, `mod`, `struct`, `enum`, `trait`, `type`, `macro`, and `const`.

Search functions by type signature (e.g. `vec -> usize` or `* -> vec`)