【Rust设计模式之新类型模式】

devtools/2024/11/16 8:46:42/

Rust设计模式之新类型模式

  • 前言
  • 代码
  • 总结


前言

类型驱动一节中有提及过新类型模式,新类型模式是类型驱动的一种方式,主要是通过新类型的封装让使用者不用考虑原来类型的细节,也保证了privacy,从而避免不必要的bug,如开发者的误操作将输入性数据修改等等。


代码

rust">
#[derive(Debug)]
struct People {name: String,age: u32,address: String,
}impl People {pub fn new(name: String, age: u32, address: String) -> Self {People { name, age, address }}
}// 新类型
#[derive(Debug)]
pub struct Student(People);impl Student {pub fn new() -> Self {Student(People::new("buddy".to_string(),20,"queenstreet".to_string(),))}pub fn show(&self) {println!("{:?}", self);}
}fn main() {let b = Student::new();b.show();
}

总结

新类型模式通常情况下直接使用元组结构体将本来的类型转换为一目了然的名称,借助元组结构体内部元素不可见性,保护内部元素不被修改,同时也降低了开发者的思考难度,需要注意的是,正是因为开发者借助了元组结构体的内部不可见性,在实现时不要再将内部元素设置为pub否则也就失去了封装的意义。


http://www.ppmy.cn/devtools/134390.html

相关文章

Ubuntu22.04.2 k8s部署

k8s介绍 简单介绍 通俗易懂的解释: Kubernetes(也被称为 K8s)就像是一个大管家,帮你管理你的云计算服务。想象一下,你有很多个小程序(我们称之为“容器”),每个都在做不同的事情&…

java 根据 pdf 模板带图片文字生成pdf文件

在现代应用开发中,自动生成包含动态内容的 PDF 文档在电子发票、合同生成、表单填充等场景中有着广泛的应用。本文将介绍如何使用 iText 库动态填充 PDF 模板字段,并在指定位置插入签名和公章图片。 项目需求 假设我们有一个 PDF 模板文件,包含表单字段,如用户姓名、地址…

C#从入门到放弃

C#和.NET的区别 C# C#是一个编程语言 .NET .NET是一个在window下创建程序的框架 .NET框架不仅局限于C#,它还可以支持很多语言 .NET包括了2个组件,一个叫CLR(通用语言运行时),另一个是用来构建程序的类库 CLR 用C写一个程序,在一台8688的机器…

如何利用必盈接口在 C#中完成股票量化程序

一、引言 在股票市场中,量化交易越来越受到关注。通过利用必盈接口,我们可以在 C#环境下构建股票量化程序,获取丰富的股票数据来支持交易策略的设计与执行。以下将详细介绍利用必盈接口在 C#中实现股票量化程序的步骤。 二、必盈接口概述 必盈…

模型减肥秘籍:模型压缩技术 模型剪枝

教程链接:模型减肥秘籍:模型压缩技术-课程详情 | Datawhale 相应的教程代码:datawhalechina/awesome-compression: 模型压缩的小白入门教程 模型剪枝介绍 模型剪枝是模型压缩中一种重要的技术,其基本思想是将模型中不重要的权重…

Briefly unavailable for scheduled maintenance. Check back in a minute.

访问wordpress网站时出现“Briefly unavailable for scheduled maintenance. Check back in a minute.”时,不要着急,不要害怕,这不是什么多大的问题。这表明wordpress的程序或wordpress使用到的插件正在升级,这是在自动升级&…

〔 MySQL 〕数据类型

目录 1.数据类型分类 2 数值类型 2.1 tinyint类型 2.2 bit类型 2.3 小数类型 2.3.1 float 2.3.2 decimal 3 字符串类型 3.1 char 3.2 varchar 3.3 char和varchar比较 4 日期和时间类型 5 enum和set mysql表中建立属性列: 列名称,类型在后 n…

2024年11月15日Github流行趋势

项目名称:MinerU 项目维护者:myhloli, dt-yy, Focusshang, drunkpig, papayalove等项目介绍:一站式开源高质量数据提取工具,支持从PDF、网页和多格式电子书中提取数据。项目star数:15,059项目fork数:1,105 …