当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Rust transmute_copy用法及代码示例


本文简要介绍rust语言中 Function std::mem::transmute_copy 的用法。

用法

pub unsafe fn transmute_copy<T, U>(src: &T) -> U

src 解释为具有类型 &U ,然后读取 src 而不移动包含的值。

此函数将不安全地假设指针 src 通过将 &T 转换为 &U 然后读取 &U size_of::<U> 字节有效(除非这样做的方式是正确的,即使在 &U&T 更严格的对齐要求)。它还会不安全地创建包含值的副本,而不是移出 src

如果 TU 具有不同的大小,这不是编译时错误,但强烈建议仅在 TU 具有相同大小的情况下调用此函数。如果 U 大于 T ,则此函数触发 undefined behavior

例子

use std::mem;

#[repr(packed)]
struct Foo {
    bar: u8,
}

let foo_array = [10u8];

unsafe {
    // Copy the data from 'foo_array' and treat it as a 'Foo'
    let mut foo_struct: Foo = mem::transmute_copy(&foo_array);
    assert_eq!(foo_struct.bar, 10);

    // Modify the copied data
    foo_struct.bar = 20;
    assert_eq!(foo_struct.bar, 20);
}

// The contents of 'foo_array' should not have changed
assert_eq!(foo_array, [10]);

相关用法


注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 Function std::mem::transmute_copy。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。