Rust 锈菌中是否有荚果类型的概念? C++中,POD类型用于描述只包含普通旧数据的类型。p>

Rust 锈菌中是否有荚果类型的概念? C++中,POD类型用于描述只包含普通旧数据的类型。p>,rust,Rust,没有构造函数、析构函数和虚成员函数的类[…] 锈有类似的概念吗?快速回答C++的POD类型≈ 锈迹斑斑 然而,还有一些其他相关概念。让我们详细讨论一下 > < >代码>拷贝特性 >最接近C++中的“POD类型”,定义如下: 仅通过复制位即可复制其值的类型 通过“复制位”,文档基本上是指memcpy()。这包括所有基本类型,例如u32、f32、char和bool,但用户定义的类型也可以是Copy。通常情况下,该特征是简单衍生的: 您可能已经注意到了克隆:克隆是复制的要求,定义如下: 能够显式复

没有构造函数、析构函数和虚成员函数的类[…]


锈有类似的概念吗?

快速回答C++的POD类型≈ 锈迹斑斑

然而,还有一些其他相关概念。让我们详细讨论一下


<> > < >代码>拷贝<代码>特性 >最接近C++中的“POD类型”,定义如下:

仅通过复制位即可复制其值的类型

通过“复制位”,文档基本上是指
memcpy()
。这包括所有基本类型,例如
u32
f32
char
bool
,但用户定义的类型也可以是
Copy
。通常情况下,该特征是简单衍生的:

您可能已经注意到了
克隆
:克隆是
复制
的要求,定义如下:

能够显式复制对象的一个常见特性

Clone
表示一个类型“能够以某种方式复制自身”,而
Copy
则表示该类型“能够通过复制类型的位来复制自身”,这需要更多


C++回答声明POD类型不包含“构造函数、析构函数和虚成员函数”。让我们将其分解为锈蚀:

  • 构造函数:Rust没有专用的构造函数方法,而是使用相关函数(C++中的静态方法)。每种类型,甚至是所有的
    Copy
    类型,都可以有任意多个关联的函数和方法。在锈病中,它并不是真正的“豆荚”要求。特别是,即使Rust的原始类型也有许多方法,例如。这一限制不适用于锈蚀

  • 析构函数:在Rust中,通过从
    Drop
    特征调用来销毁对象(或者更确切地说:
    Drop()
    在作用域末尾自动调用)类型在实现
    Drop
    特征时不能
    Copy
    Rust在这里也有类似的限制

  • 虚拟成员函数:在Rust中,虚拟不是函数的属性。大多数函数都可以在虚拟上下文中使用,也就是说:它们可以与动态分派一起使用,但是作为
    Copy
    并不能阻止类型在动态分派上下文中使用(用Rust术语来说:用作trait对象)。这部分是由于vptr不存储在类型中,而是存储在指向对象的指针(fat指针)旁边。这一点不适用于生锈


然而,你可能需要更多的东西从你的“豆荚类型”比“复制位复制”。Rust具有一些其他特性的内置特定特性界限:

  • 'static
    :要求类型不包含任何内部引用。例如,
    structfoo
    
    #[derive(Clone, Copy)]
    struct Point {
        x: f32,
        y: f32,
    }
    
    trait Pod: 'static + Copy + Sized + Send + Sync {}
    
    impl<T: 'static + Copy + Sized + Send + Sync> Pod for T {}