Rollup merge of #95534 - jyn514:std-mem-copy, r=joshtriplett
Add `core::mem::copy` to complement `core::mem::drop`. This is useful for combinators. I didn't add `clone` since you can already use `Clone::clone` in its place; copy has no such corresponding function.
This commit is contained in:
commit
9d4e08e725
@ -973,6 +973,28 @@ pub const fn replace<T>(dest: &mut T, src: T) -> T {
|
|||||||
#[cfg_attr(not(test), rustc_diagnostic_item = "mem_drop")]
|
#[cfg_attr(not(test), rustc_diagnostic_item = "mem_drop")]
|
||||||
pub fn drop<T>(_x: T) {}
|
pub fn drop<T>(_x: T) {}
|
||||||
|
|
||||||
|
/// Bitwise-copies a value.
|
||||||
|
///
|
||||||
|
/// This function is not magic; it is literally defined as
|
||||||
|
/// ```
|
||||||
|
/// pub fn copy<T: Copy>(x: &T) -> T { *x }
|
||||||
|
/// ```
|
||||||
|
///
|
||||||
|
/// It is useful when you want to pass a function pointer to a combinator, rather than defining a new closure.
|
||||||
|
///
|
||||||
|
/// Example:
|
||||||
|
/// ```
|
||||||
|
/// #![feature(mem_copy_fn)]
|
||||||
|
/// use core::mem::copy;
|
||||||
|
/// let result_from_ffi_function: Result<(), &i32> = Err(&1);
|
||||||
|
/// let result_copied: Result<(), i32> = result_from_ffi_function.map_err(copy);
|
||||||
|
/// ```
|
||||||
|
#[inline]
|
||||||
|
#[unstable(feature = "mem_copy_fn", issue = "98262")]
|
||||||
|
pub fn copy<T: Copy>(x: &T) -> T {
|
||||||
|
*x
|
||||||
|
}
|
||||||
|
|
||||||
/// Interprets `src` as having type `&U`, and then reads `src` without moving
|
/// Interprets `src` as having type `&U`, and then reads `src` without moving
|
||||||
/// the contained value.
|
/// the contained value.
|
||||||
///
|
///
|
||||||
|
Loading…
Reference in New Issue
Block a user