Struct core::raw::Slice
[−]
[src]
pub struct Slice<T> { pub data: *const T, pub len: usize, }
Unstable (
raw
#27751)The representation of a slice like &[T]
.
This struct is guaranteed to have the layout of types like &[T]
,
&str
, and Box<[T]>
, but is not the type of such slices
(e.g. the fields are not directly accessible on a &[T]
) nor does
it control that layout (changing the definition will not change
the layout of a &[T]
). It is only designed to be used by unsafe
code that needs to manipulate the low-level details.
However, it is not recommended to use this type for such code, since there are alternatives which may be safer:
- Creating a slice from a data pointer and length can be done with
std::slice::from_raw_parts
orstd::slice::from_raw_parts_mut
instead ofstd::mem::transmute
ing a value of typeSlice
. - Extracting the data pointer and length from a slice can be
performed with the
as_ptr
(oras_mut_ptr
) andlen
methods.
If one does decide to convert a slice value to a Slice
, the
Repr
trait in this module provides a method for a safe
conversion from &[T]
(and &str
) to a Slice
, more type-safe
than a call to transmute
.
Examples
#![feature(raw)] fn main() { use std::raw::{self, Repr}; let slice: &[u16] = &[1, 2, 3, 4]; let repr: raw::Slice<u16> = slice.repr(); println!("data pointer = {:?}, length = {}", repr.data, repr.len); }#![feature(raw)] use std::raw::{self, Repr}; let slice: &[u16] = &[1, 2, 3, 4]; let repr: raw::Slice<u16> = slice.repr(); println!("data pointer = {:?}, length = {}", repr.data, repr.len);
Fields
data | Unstable ( raw #27751) |
len | Unstable ( raw #27751) |