首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >当特征所需的状态比结构中包含的状态更多时,如何实现结构的特征?

当特征所需的状态比结构中包含的状态更多时,如何实现结构的特征?
EN

Stack Overflow用户
提问于 2019-02-25 08:14:49
回答 1查看 191关注 0票数 0

当特征所需的状态比结构中包含的状态更多时,如何实现结构的特征?例如,如何为下面所示的Employee结构实现Human特性?

代码语言:javascript
运行
AI代码解释
复制
struct Human {
    name: &str,
}

trait Employee {
    fn id(&self) -> i32;
    fn name(&self) -> &str;
}

impl Employee for Human {
    fn id(&self) -> i32 {
        // From where do I get the ID?
    }
    fn name(&self) -> &str {
        self.name
    }
}

我看不出有什么方法可以将额外的状态嵌入到impl或特性中。

创建一个新的HumanToEmployeeAdapter结构,保存丢失的信息,然后为新结构实现Employee特性,这是唯一的选择吗?

我的背景是在C#。下面是我用这种语言来处理它的方法:

代码语言:javascript
运行
AI代码解释
复制
class Human
{
    public string Name { get; }

    public Human(string name) { Name = name; }
}

interface IEmployee
{
    int Id { get; }
    string Name { get; }
}

class HumanToEmployeeAdapter : IEmployee
{
    readonly Human _human;

    public int Id { get; }
    public string Name => _human.Name;

    public HumanToEmployeeAdapter(
        Human human,
        int id)
    {
        _human = human;
        Id = id;
    }
}

您会注意到这是“创建一个新的HumanToEmployeeAdapter结构”路径。那么,这就是Rustaceans解决这个问题的方法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-25 08:51:03

您几乎可以准确地翻译C#代码,如下所示:

代码语言:javascript
运行
AI代码解释
复制
struct Human<'a> {
    name: &'a str,
}

trait Employee {
    fn id(&self) -> i32;
    fn name(&self) -> &str;
}

struct HumanToEmployeeAdapter<'a> {
    human: &'a Human<'a>,
    id: i32,
}

impl<'a> HumanToEmployeeAdapter<'a> {
    fn new(id: i32, human: &'a Human<'a>) -> Self {
        HumanToEmployeeAdapter { id, human }
    }
}

impl<'a> Employee for HumanToEmployeeAdapter<'a> {
    fn id(&self) -> i32 {
        self.id
    }

    fn name(&self) -> &str {
        self.human.name
    }
}

如果您的Human类型可以变成Copy (它的行为类似于C#值类型),那么您可以通过让HumanToEmployeeAdapter拥有Human来简化事情,这意味着您不必担心引用的生存期:

代码语言:javascript
运行
AI代码解释
复制
#[derive(Copy, Clone)]
struct Human<'a> {
    name: &'a str,
}

trait Employee {
    fn id(&self) -> i32;
    fn name(&self) -> &str;
}

struct HumanToEmployeeAdapter<'a> {
    human: Human<'a>,
    id: i32,
}

impl<'a> HumanToEmployeeAdapter<'a> {
    fn new(id: i32, human: Human<'a>) -> Self {
        HumanToEmployeeAdapter { id, human }
    }
}

impl<'a> Employee for HumanToEmployeeAdapter<'a> {
    fn id(&self) -> i32 {
        self.id
    }

    fn name(&self) -> &str {
        self.human.name
    }
}

注意,您仍然需要跟踪name的生存期,因为&str是一个引用。如果您将其创建为一个拥有的String,那么您将不需要Human的生存期参数,但是Human不能是Copy。这是因为String不能安全地复制到内存中,因为它们的Drop驱动(类似于C#终结器),如果Rust允许您这样做,就会导致双重自由--这就是为什么没有。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54870420

复制
相关文章
Kubernetes 无状态应用的一般特征
以 12 要素为代表的微服务标准,很好地给微服务的特征做出了指导。然而具体到以容器形式在 Kubernetes 上运行的无状态业务应用上,这个标准是有些高层的——它看重的是方法和架构。如果仅从外在视角来对一个“顺眼”的 Kubernetes 应用进行观察,这个应用应该有什么特征呢?
崔秀龙
2020/09/15
9270
传输丰富的特征层次结构以实现稳健的视觉跟踪
论文地址:https://arxiv.org/pdf/1501.04587.pdf
代码的路
2022/08/23
1.6K0
传输丰富的特征层次结构以实现稳健的视觉跟踪
如何在深度学习结构中使用纹理特征
这是前一篇文章的继续,在这第篇文章中,我们将讨论纹理分析在图像分类中的重要性,以及如何在深度学习中使用纹理分析。
AI算法与图像处理
2022/12/11
2.5K0
如何在深度学习结构中使用纹理特征
ConvLSTM:时空特征提取结构 [github代码]
这篇文章[1]想要解决的问题是预测一个区域短时间内的降水变化,在它之前的工作(2015年之前)还很少有采用机器学习的方法来做相关预测。由于预测的输入是时序雷达图等具有空间和时间关系的数据,因此文中提出了convolutional LSTM (ConvLSTM)模型,用这个模型可以捕获数据的时空依赖,进而提高模型的预测结果。
Minerva
2020/08/11
6.9K1
Nature|确定蛋白质结构的短暂状态
2022年3月2日,Nature 杂志发表评论,对同期文章 Structure determination of high-energy states in a dynamic protein ensemble 进行了解读。
智药邦
2022/04/13
3960
Nature|确定蛋白质结构的短暂状态
结构化技能特征工程简介
特征工程:决定了模型的精度上限。是数据挖掘的主要工作内容:数据清洗、数据预处理、数据转换。
算法之名
2021/09/23
3750
结构化技能特征工程简介
生化小课 | 氨基酸具有共同的结构特征
所有20种常见氨基酸都是α-氨基酸。它们有一个羧基和一个氨基连接到同一个碳原子(α碳)(图3-2)。它们在侧链或R基团上彼此不同,其结构、大小和电荷各不相同,并影响氨基酸在水中的溶解度。除了这20种氨基酸之外,还有很多不太常见的氨基酸。一些是蛋白质合成后被修饰的残基,另一些是存在于生物体中但不作为蛋白质成分的氨基酸,还有两种是仅在少数蛋白质中发现的特殊情况。蛋白质中常见的氨基酸被赋予了三个字母的缩写和一个字母的符号,用来简略地表示蛋白质中聚合的氨基酸的组成和序列。
尐尐呅
2023/02/23
5920
生化小课 | 氨基酸具有共同的结构特征
如何检查macOS中硬盘的状态
无论我们的Mac使用的是 SSD固态硬盘或HDD机械硬盘,都必须保持硬盘读写健康程度。毕竟,数据的丢失对于来我们来说是一个重大的损失,毕竟有些数据不是花钱就能买到的。如果你也非常关注你的Mac硬盘健康情况的话,这篇文章应该可以帮助你!
MAC先森
2019/09/30
4.1K0
特征工程(中)- 特征表达
从一个完整的机器学习任务来看,在选择完特征之后,特征表达的任务就是要将一个个的样本抽象成数值向量,供机器学习模型使用。因此,特征表达就要兼顾特征属性和模型需求这两个方面。
小萌哥
2020/07/21
7170
机器学习中的特征——特征选择的方法以及注意点
关于机器学习中的特征我有话要说     在这次校园招聘的过程中,我学到了很多的东西,也纠正了我之前的算法至上的思想,尤其是面试百度的过程中,让我渐渐意识到机器学习不是唯有算法,机器学习是一个过程,这样的过程包括数据处理+模型训练,而数据处理又包括了特征提取,特征表示。模型训练中有训练的策略,训练的模型,算法相关等等的一套流程,一个好的预测模型与特征提取,特征表示的方法息息相关,而算法这是作用于特征数据集上的一种策略。     以上是我个人的一些观点,如有不同见解的人,也希望你们留言,大家一起探讨,一起进步。
felixzhao
2018/03/19
7290
机器学习中的特征——特征选择的方法以及注意点
    在这次校园招聘的过程中,我学到了很多的东西,也纠正了我之前的算法至上的思想,尤其是面试百度的过程中,让我渐渐意识到机器学习不是唯有算法,机器学习是一个过程,这样的过程包括数据处理+模型训练,而数据处理又包括了特征提取,特征表示。模型训练中有训练的策略,训练的模型,算法相关等等的一套流程,一个好的预测模型与特征提取,特征表示的方法息息相关,而算法这是作用于特征数据集上的一种策略。
felixzhao
2019/02/13
1.4K1
特征工程系列:特征筛选的原理与实现(下)
我们在上篇中介绍了特征选择的分类,并详细介绍了过滤式特征筛选的原理与实现。本篇继续介绍封装式和嵌入式特征筛选的原理与实现。
Sam Gor
2019/08/06
6150
特征工程系列:特征筛选的原理与实现(下)
特征工程系列:特征筛选的原理与实现(下)
我们在《特征工程系列:特征筛选的原理与实现(上)》中介绍了特征选择的分类,并详细介绍了过滤式特征筛选的原理与实现。本篇继续介绍封装式和嵌入式特征筛选的原理与实现。
石晓文
2019/07/30
5180
特征工程系列:特征筛选的原理与实现(下)
特征工程系列:特征筛选的原理与实现(上)
数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。由此可见,特征工程在机器学习中占有相当重要的地位。在实际应用当中,可以说特征工程是机器学习成功的关键。
石晓文
2019/07/30
5600
特征工程系列:特征筛选的原理与实现(上)
特征工程系列:特征筛选的原理与实现(下)
我们在《特征工程系列:特征筛选的原理与实现(上)》中介绍了特征选择的分类,并详细介绍了过滤式特征筛选的原理与实现。本篇继续介绍封装式和嵌入式特征筛选的原理与实现。
木东居士
2019/07/23
1.9K0
特征工程系列:特征筛选的原理与实现(下)
特征工程系列:特征筛选的原理与实现(上)
数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。由此可见,特征工程在机器学习中占有相当重要的地位。在实际应用当中,可以说特征工程是机器学习成功的关键。
Datawhale
2019/07/29
3.5K0
特征工程系列:特征筛选的原理与实现(上)
特征工程系列:特征筛选的原理与实现(上)
数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。由此可见,特征工程在机器学习中占有相当重要的地位。在实际应用当中,可以说特征工程是机器学习成功的关键。
木东居士
2019/07/23
7160
特征工程系列:特征筛选的原理与实现(上)
特征工程系列:特征筛选的原理与实现(上)
本篇是来自木东居士的超赞文章,是关于特征工程的一些常用的方法理论以及python实现,大家在做特征工程的时候,可以有所借鉴。
Sam Gor
2019/08/05
1.1K0
特征工程系列:特征筛选的原理与实现(上)
特征工程系列:特征筛选的原理与实现(下)
我们在《特征工程系列:特征筛选的原理与实现(上)》中介绍了特征选择的分类,并详细介绍了过滤式特征筛选的原理与实现。本篇继续介绍封装式和嵌入式特征筛选的原理与实现。
Datawhale
2019/07/29
1.5K0
特征工程系列:特征筛选的原理与实现(下)
Scikit-Learn中的特征排名与递归特征消除
对于任何机器学习应用程序而言,特征选择都是一项重要任务。当所讨论的数据具有许多功能时,这尤其重要。最佳数量的特征还可以提高模型的准确性。获得最重要的特征和最佳特征的数量可以通过特征重要性或特征等级来获得。在本文中,我们将探讨功能排名。
计算机与AI
2020/12/14
2K0
Scikit-Learn中的特征排名与递归特征消除

相似问题

如何实现带有特征MyTrait<A>的结构?

17

使用结构实现中的特征方法

21

结构特征

32

如何实现对结构的引用的添加特征?

10

当一个对象可能实现多个特征时,如何创建对特征的引用结构?

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文