Function core::mem::transmute_copy 1.0.0 (const: unstable)[−][src]
pub unsafe fn transmute_copy<T, U>(src: &T) -> UExpand description
将 src 解释为具有 &U 类型,然后在不移动所包含的值的情况下读取 src。
通过将 &T 转换为 &U,然后读取 &U,此函数将不安全地假定指针 src 对 size_of::<U> 字节有效 (除非这样做的正确方式是,即使 &U 的对齐要求比 &T 严格)。
它还将不安全地创建所包含值的副本,而不是移出 src。
如果 T 和 U 具有不同的大小,则不是编译时错误,但是强烈建议仅在 T 和 U 具有相同的大小时调用此函数。如果 U 大于 T,则此函数将触发 未定义的行为。
Examples
use std::mem;
#[repr(packed)]
struct Foo {
bar: u8,
}
let foo_array = [10u8];
unsafe {
// 从 'foo_array' 复制数据并将其视为 'Foo'
let mut foo_struct: Foo = mem::transmute_copy(&foo_array);
assert_eq!(foo_struct.bar, 10);
// 修改复制的数据
foo_struct.bar = 20;
assert_eq!(foo_struct.bar, 20);
}
// 'foo_array' 的内容不应更改
assert_eq!(foo_array, [10]);Run