通过例子学 rust 个人精简版 3-1

Rust学习:通过例子学Rust 官方文档:通过例子学Rust的个人笔记,陆续学习中,大佬别喷 阅读详情

3-1

自定义类型
Rust 自定义数据类型主要是通过下面这两个关键字来创建:

struct: 定义一个结构体(structure)
enum: 定义一个枚举类型(enumeration)

而常量(constant)可以通过 const 和 static 关键字来创建。
结构体
#[derive(Debug)]
struct Person {
    name: String,
    age: u8,
}

// 单元结构体
struct Unit;

// 元组结构体
struct Pair(i32, f32);

// 带有两个字段的结构体
struct Point {
    x: f32,
    y: f32,
}

// 结构体可以作为另一个结构体的字段
#[allow(dead_code)]
struct Rectangle {
    // 可以在空间中给定左上角和右下角在空间中的位置来指定矩形。
    top_left: Point,
    bottom_right: Point,
}

fn main() {
    // 使用简单的写法初始化字段,并创建结构体
    let name = String::from("Peter");
    let age = 27;
    let peter = Person { name, age };

    // 以 Debug 方式打印结构体
    println!("{:?}", peter);

    // 实例化结构体 `Point`
    let point: Point = Point { x: 10.3, y: 0.4 };

    // 访问 point 的字段
    println!("point coordinates: ({}, {})", point.x, point.y);

    // 使用结构体更新语法创建新的 point,
    // 这样可以用到之前的 point 的字段
    let bottom_right = Point { x: 5.2, ..point };

    // `bottom_right.y` 与 `point.y` 一样,因为这个字段就是从 `point` 中来的
    println!("second point: ({}, {})", bottom_right.x, bottom_right.y);

    // 使用 `let` 绑定来解构 point
    let Point { x: left_edge, y: top_edge } = point;

    let _rectangle = Rectangle {
        // 结构体的实例化也是一个表达式
        top_left: Point { x: left_edge, y: top_edge },
        bottom_right: bottom_right,
    };

    // 实例化一个单元结构体
    let _unit = Unit;

    // 实例化一个元组结构体
    let pair = Pair(1, 0.1);

    // 访问元组结构体的字段
    println!("pair contains {:?} and {:?}", pair.0, pair.1);

    // 解构一个元组结构体
    let Pair(integer, decimal) = pair;

    println!("pair contains {:?} and {:?}", integer, decimal);
}
要点1 : 元组结构体 单元结构体
要点2 : 结构体解构
要点3 : 结构体点字段访问法 元组结构体 与 元组访问法一样
要点4 : 在声明语法中 ..结构体 可以继承其他可以继承的字段内容 
// 动手试一试
struct Point {
    x: f32,
    y: f32,
}
struct Rectangle {
    top_left: Point,
    bottom_right: Point,
}
fn rect_area(rect: Rectangle) -> f32 {
    let Rectangle {
        top_left: Point { x: x1, y: y1 },
        bottom_right: Point { x: x2, y: y2 },
    } = rect;

    let width = (x2 - x1).abs(); // 取绝对值,确保宽度为正
    let height = (y2 - y1).abs(); // 取绝对值,确保高度为正

    width * height
}
// 动手试一试
struct Point {
    x: f32,
    y: f32,
}
struct Rectangle {
    top_left: Point,
    bottom_right: Point,
}
// 返回一个以给定点为左上角,边长为指定值的正方形 Rectangle
fn square(top_left: Point, side_length: f32) -> Rectangle {
    Rectangle {
        top_left: Point {
            x: top_left.x,
            y: top_left.y,
        },
        bottom_right: Point {
            x: top_left.x + side_length,
            y: top_left.y + side_length,
        },
    }
}
vue3+rust个人博客建站日记1-框架开发环境配置。 记录使用Vue3+Rust搭建个人博客网站 阅读详情

相关推荐

通过例子学Rust

中文版(Rust by Example)Rust社区官方翻译,翻译精准可靠,非常适合Rust入门学习,主要讲述Rust基本语法

通过例子学习Rust

通过例子学习rust,学习Rust的必看的官方文档之一

weixin_51487151的博客 1387

通过例子学rust 中文版 (rust team).pdf

通过例子学rust,用实例来训练自己

《通过例子学Rust》简介

《通过例子学 Rust》(Rust by Example)简介,本文仅为个人学习的记录和交流

klt2006116357的博客 515

01 AUTOSAR CP标准文档阅读指南

01 AUTOSAR CP标准文档阅读指南

汽车软件工程师 | 好奇博主 | 处女座 1134

新装Win10/Win11后VMware虚拟机连不上网?手把手教你排查‘网络信息不可用’(从服务检查到网段配置)

本文详细介绍了在Windows 10/11系统上安装VMware Workstation后虚拟机无法联网的排查方法。从检查VMware NAT Service、DHCP Service等关键服务状态,到重置虚拟网络编辑器配置,再到内核设备驱动问题解决,手把手教你解决‘网络信息不可用’问题。特别针对VMCI驱动故障提供了实用解决方案,帮助用户快速恢复虚拟机网络连接。

weixin_28736335的博客 770

通过例子学 Rust 中文版

通过例子学Rust中文版

weixin_44169596的博客 410

BUPT软件安全实验三

可以看出栈溢出对程序运行的安全性有很大的威胁,如果不对栈进行保护,只要系统中存在栈溢出漏洞,即可令攻击者通过非正当方法获取操作权限。(6)解决思考题,即:在不修改StackOverrun程序源代码的情况下,构造shellcode,通过JMP ESP的方式实现通过记事本打开shellcode.txt(可使用CreateProcessA或WinExec等API)。查看缓冲区信息,可以看到dest指向地址0x0012FAF0,其为数组的存放起始位置,也就是shellcode注入的起始位置。

7xun's space 1966

Rust By Example:通过实例学习Rust编程语言

**在线阅读**:[Rust By Example 在线版](https://doc.rust-lang.org/rust-by-example/)

gitblog_00959的博客 582

三菱FX3U PLC红绿灯ST编程实战:从基础逻辑到急停功能完整实现

本文以十字路口红绿灯控制为例,详细讲解了三菱FX3U PLC使用ST编程的完整实战过程。内容涵盖从基础时序逻辑、状态机设计,到急停功能、黄灯闪烁、昼夜模式切换等高级功能的实现,并提供了代码优化与调试技巧,帮助工程师掌握结构化文本在工业控制中的清晰、结构化应用。

weixin_29070861的博客 533

阿里云天池大数据长期赛:金融风控-贷款违约预测(含代码)

本次比赛让自己在大数据的处理流程上有了更明确的认知,从数据清洗、特征工程、数据建模,每一个过程都能学到很多经验和知识,值得去历练。

weixin_46685991的博客 1万+

通过例子学 rust 个人精简版 2-2

【代码】通过例子学 rust 个人精简版 2-2。

BECOMEviolet的博客 506

Linux故障排查和性能优化面试题及参考答案

在 Linux 系统中,负载(Load Average)是衡量系统繁忙程度的一个重要指标,它表示系统在特定时间间隔内运行队列中的平均进程数。负载值反映了系统当前的工作压力,主要包括 CPU 等待运行的进程数量和处于不可中断睡眠状态(通常是等待 I/O 操作完成)的进程数量。负载平均值通常有三个数值,分别代表过去 1 分钟、5 分钟和 15 分钟内的系统平均负载。例如,在使用uptime命令或查看文件时,会看到类似这样的输出,这三个数值依次表示过去 1 分钟、5 分钟和 15 分钟的负载平均值。

大模型大数据攻城狮的专栏 1081

通过例子学 rust 个人精简版 2-1

【代码】通过例子学 rust 个人精简版 2-1。

BECOMEviolet的博客 461

CANoe制作网关实现CAN(FD)报文故障注入(报文长度/timeout/信号错误/E2E)2

CANoe制作网关实现CAN报文故障注入(报文长度/timeout/信号错误/E2E) 2.新建CANoe工程 3.透传功能 4.故障注入panel面板 5.CAPL代码 5.1故障注入开始、停止、定时 5.2DLC故障注入 5.3 Timeout故障注入 5.4 信号故障注入

天赐好车的博客 3675

通过Python实现物联网金橙子自动打标

对于自家公司使用金橙子打标卡时,为了与生产线或者PLC联动等,往往需要对金橙子打标卡进行二次开发,而在二次开发中不得不涉及到MarkEzd.dll这个文件,而这个dll文件网上版本多不说,一般都没法直接使用,最后还不得不花大价钱购买专用库。而本文针对这个问题,涉法通过python来绕过MarkEzd.dll文件,直接进行自动化控制EzCad来实现联动,可应用于实际生产。文章最后拓展一下以物联网的形式,实现手机平台等登录网页,输入想要的印字内容后,远程打印的案例。

lylelo的博客 3365

通过例子学 rust 个人精简版 3-2

【代码】通过例子学 rust 个人精简版 3-2。

BECOMEviolet的博客 326

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

通过例子学 rust 个人精简版 5-all

之前有提到过,没啥好说的。之前有提到过,没啥好说的。

BECOMEviolet的博客 575

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

通过例子学 rust 个人精简版 1-2

【代码】通过例子学 rust 个人精简版 1-2。

BECOMEviolet的博客 407

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

通过例子学 rust 个人精简版 1-1

【代码】通过例子学 rust 个人精简版 1-1。

BECOMEviolet的博客 968

【一起学Rust】Rust介绍与开发环境搭建

Rust 语言是一种高效、可靠的通用高级语言。其高效不仅限于开发效率,它的执行效率也是令人称赞的,是一种少有的兼顾开发效率和执行效率的语言。对于现在网络来说,Rust 被广泛了解主要是由于两件事。一是安全性,Rust 语言因其并发安全性而深受众多开发者的喜爱,曾在多个榜单上获评最受欢迎编程语言。一是 Linux 内核将引入 Rust 。本篇你将知道为什么需要学习Rust,并且学会运行Rust的官方案例。...

专注Rust编程与技术分享,涵盖C++、Python等开发实战,新手友好,专注实战,助力编程成长。 12万+

掌握 Rust 编程利器:详解“通过例子学Rust中文版”开源项目

掌握 Rust 编程利器:详解“通过例子学Rust中文版”开源项目 去发现同类优质开源项目:https://gitcode.com/ 通过例子学Rust中文版带完整目录:项目核心功能/场景 通过实际案例学习 Rust 编程语言,全面掌握 Rust 语法与特性。 项目介绍 在众多编程语言中,Rust 以其安全性、并发性和实用性脱颖而出,成为开发者们的新宠。为了帮助更多 Rust 学习者深入理解这门语...

gitblog_06796的博客 702

《Rust编程指南:通过"通过例子学 Rust"中文版入门》

**项目名称**: Rust By Example 中文版([GitHub](https://github.com/rust-lang-cn/rust-by-example-cn)) **概述**: 此项目是 Rust 编程语言的官方教程《通过例子学 Rust》的中文翻译版,旨在帮助中文读者更好地理解和掌握 Rust 的核心概念和语法特性。它包含了丰富的可运行实例,覆盖了从基础类型、控制流、...

gitblog_01068的博客 492

通过例子学 rust 个人精简版 4-all

作用域 简单说 {} 内就是所属作用域。这个也没啥好说的, 就是 shadow。其余的和之前内容重复了。

BECOMEviolet的博客 393

【Rust自学】1.3. Rust Cargo

Cargo的介绍与基本操作

A Rookie in San Domenico School 2021

Rust 一门赋予每个人构建可靠且高效软件能力的语言

Rust 程序设计语言:一门赋予每个人构建可靠且高效软件能力的语言。

汉阳Hann's Home 8081
上一篇: 通过例子学 rust 个人精简版 2-2
下一篇: 通过例子学 rust 个人精简版 3-2
独好紫罗兰
博客等级 码龄5年 616粉丝 130原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值