mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-27 01:04:03 +00:00
Rollup merge of #32956 - GuillaumeGomez:ptr_examples, r=steveklabnik
Add examples for std::ptr module functions Part of #29371. r? @steveklabnik
This commit is contained in:
commit
de477edb6d
@ -119,6 +119,17 @@ pub unsafe fn replace<T>(dest: *mut T, mut src: T) -> T {
|
|||||||
/// `src` is not used before the data is overwritten again (e.g. with `write`,
|
/// `src` is not used before the data is overwritten again (e.g. with `write`,
|
||||||
/// `zero_memory`, or `copy_memory`). Note that `*src = foo` counts as a use
|
/// `zero_memory`, or `copy_memory`). Note that `*src = foo` counts as a use
|
||||||
/// because it will attempt to drop the value previously at `*src`.
|
/// because it will attempt to drop the value previously at `*src`.
|
||||||
|
///
|
||||||
|
/// # Examples
|
||||||
|
///
|
||||||
|
/// Basic usage:
|
||||||
|
///
|
||||||
|
/// ```
|
||||||
|
/// let x = 12;
|
||||||
|
/// let y = &x as *const i32;
|
||||||
|
///
|
||||||
|
/// unsafe { println!("{}", std::ptr::read(y)); }
|
||||||
|
/// ```
|
||||||
#[inline(always)]
|
#[inline(always)]
|
||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
pub unsafe fn read<T>(src: *const T) -> T {
|
pub unsafe fn read<T>(src: *const T) -> T {
|
||||||
@ -155,6 +166,21 @@ pub unsafe fn read_and_drop<T>(dest: *mut T) -> T {
|
|||||||
///
|
///
|
||||||
/// This is appropriate for initializing uninitialized memory, or overwriting
|
/// This is appropriate for initializing uninitialized memory, or overwriting
|
||||||
/// memory that has previously been `read` from.
|
/// memory that has previously been `read` from.
|
||||||
|
///
|
||||||
|
/// # Examples
|
||||||
|
///
|
||||||
|
/// Basic usage:
|
||||||
|
///
|
||||||
|
/// ```
|
||||||
|
/// let mut x = 0;
|
||||||
|
/// let y = &mut x as *mut i32;
|
||||||
|
/// let z = 12;
|
||||||
|
///
|
||||||
|
/// unsafe {
|
||||||
|
/// std::ptr::write(y, z);
|
||||||
|
/// println!("{}", std::ptr::read(y));
|
||||||
|
/// }
|
||||||
|
/// ```
|
||||||
#[inline]
|
#[inline]
|
||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
pub unsafe fn write<T>(dst: *mut T, src: T) {
|
pub unsafe fn write<T>(dst: *mut T, src: T) {
|
||||||
@ -185,6 +211,17 @@ pub unsafe fn write<T>(dst: *mut T, src: T) {
|
|||||||
/// `src` is not used before the data is overwritten again (e.g. with `write`,
|
/// `src` is not used before the data is overwritten again (e.g. with `write`,
|
||||||
/// `zero_memory`, or `copy_memory`). Note that `*src = foo` counts as a use
|
/// `zero_memory`, or `copy_memory`). Note that `*src = foo` counts as a use
|
||||||
/// because it will attempt to drop the value previously at `*src`.
|
/// because it will attempt to drop the value previously at `*src`.
|
||||||
|
///
|
||||||
|
/// # Examples
|
||||||
|
///
|
||||||
|
/// Basic usage:
|
||||||
|
///
|
||||||
|
/// ```
|
||||||
|
/// let x = 12;
|
||||||
|
/// let y = &x as *const i32;
|
||||||
|
///
|
||||||
|
/// unsafe { println!("{}", std::ptr::read_volatile(y)); }
|
||||||
|
/// ```
|
||||||
#[inline]
|
#[inline]
|
||||||
#[stable(feature = "volatile", since = "1.9.0")]
|
#[stable(feature = "volatile", since = "1.9.0")]
|
||||||
pub unsafe fn read_volatile<T>(src: *const T) -> T {
|
pub unsafe fn read_volatile<T>(src: *const T) -> T {
|
||||||
@ -217,6 +254,21 @@ pub unsafe fn read_volatile<T>(src: *const T) -> T {
|
|||||||
///
|
///
|
||||||
/// This is appropriate for initializing uninitialized memory, or overwriting
|
/// This is appropriate for initializing uninitialized memory, or overwriting
|
||||||
/// memory that has previously been `read` from.
|
/// memory that has previously been `read` from.
|
||||||
|
///
|
||||||
|
/// # Examples
|
||||||
|
///
|
||||||
|
/// Basic usage:
|
||||||
|
///
|
||||||
|
/// ```
|
||||||
|
/// let mut x = 0;
|
||||||
|
/// let y = &mut x as *mut i32;
|
||||||
|
/// let z = 12;
|
||||||
|
///
|
||||||
|
/// unsafe {
|
||||||
|
/// std::ptr::write_volatile(y, z);
|
||||||
|
/// println!("{}", std::ptr::read_volatile(y));
|
||||||
|
/// }
|
||||||
|
/// ```
|
||||||
#[inline]
|
#[inline]
|
||||||
#[stable(feature = "volatile", since = "1.9.0")]
|
#[stable(feature = "volatile", since = "1.9.0")]
|
||||||
pub unsafe fn write_volatile<T>(dst: *mut T, src: T) {
|
pub unsafe fn write_volatile<T>(dst: *mut T, src: T) {
|
||||||
|
Loading…
Reference in New Issue
Block a user