Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >rust的高级特性

rust的高级特性

原创
作者头像
李子健
发布于 2022-05-10 14:08:20
发布于 2022-05-10 14:08:20
6670
举报
文章被收录于专栏:每日一善每日一善

类型系统

rust中的表达式是什么{}包围的部分,函数,impl,match里面,if else表达式,通过这些功能分割系统

  • let语句的作用,创建新变量并且绑定资源
  • 终止loop默认返回()
  • rust是区分有符合和无符号类型的,和go类似
  • rust支持类型推断
  • rust支持类型别名 type xxx =xxx;

两种字符串 string和str

String:包含所有权的字符串

代码语言:txt
AI代码解释
复制
* 支持字符串切片
  • str只能创建引用类型。&str借用字符串
    • 'static 整个生命周期
    • &str不可变
  • 函数中使用字符串将切片传入

&str和string的场景

  • 尽可能使用&str
  • &str使用中零成本

全局变量

  • 常量 const, &'static
  • 静态值 static
  • 编译期函数 const fn 纯函数
  • lazy_static!将静态值动态化,构建从任意地方可以访问的静态类型

迭代器

  • 迭代器trait Iterator
  • 命名规范 iter()通过引用获取元素 iter_mut()可变引用 * into_iter()获取值的所有权 我们可以通过实现Iterator实现迭代器

高级类型

  • 不定长类型
    • 切片 T
    • dyn trait 特征对象
    • 不定长字段作为最后一个字段的结构体
    • &str
  • 函数类型:支持函数类型
  • never类型!和函数分发 忽略编译器检测
  • 联合,支持union,主要是为了对接c语言
  • Cow写时复制的智能指针
代码语言:rust
AI代码解释
复制
const fn test1(a: u32) -> u32 {
    0xDEADBEEF ^ a
}

fn main() {
    println!("{}", test1(12));

    let hi = String::from("Hello");
    println!("{}", hi);

    let tchar = &hi[0..3];
    println!("{:?}", tchar);
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Rust开发⼲货集(1)--迭代器与消费器
在 Rust 中,"转移所有权"(Ownership Transfer)是一种核心概念,它涉及变量和数据的所有权从一个实体转移到另一个实体。这种机制帮助 Rust 在编译时期管理内存安全,避免悬挂指针和内存泄漏等问题。
fliter
2024/01/09
1880
Rust - 安装环境、基本类型、流程控制、函数、模块、泛型、所有权
学习Rust语言是公司同事最先开始提议的,准备用接下来的项目试试水,Rust是一个强类型编译型语言,比较偏向底层,所以开启了Rust的探索之旅。
stark张宇
2023/02/24
1.2K0
Rust学习笔记Day11 类型系统及多态是如何实现的?
一门编程语言的类型系统会影响到开发者的形式和效率及程序员的安全性。 因为对于计算机而言,它并不知道有什么类型,最终执行的都是一条条指令,或与内存打交道,内存中的数据是字节流。
用户1072003
2023/02/23
1.1K0
Rust学习笔记Day11 类型系统及多态是如何实现的?
【译】设计优雅的 Rust 库 API
原文见:https://deterministic.space/elegant-apis-in-rust.html
MikeLoveRust
2019/11/24
1.8K0
Rust实战系列-基本语法
本文是《Rust in action》学习总结系列的第二部分,更多内容请看已发布文章:
abin
2023/03/21
2.3K0
Rust实战系列-基本语法
rust迭代器
迭代器模式允许你对一个序列的项进行某些处理。迭代器(iterator)负责遍历序列中的每一项和决定序列何时结束的逻辑。当使用迭代器时,我们无需重新实现这些逻辑。
zy010101
2023/05/26
5000
一名Java开发的Rust学习笔记
笔者的主力语言是Java,近三年Kotlin、Groovy、Go、TypeScript写得比较多。早年间还写过一些Python和JavaScript。总得来说落地在生产中的语言都是应用级语言,对于系统编程级语言接触不多。但这不妨碍我写下这么一篇笔记,说不定也有一些常年在应用层的同学想领略一下Rust的风采呢。
泊浮目
2024/03/19
2700
一名Java开发的Rust学习笔记
【译】为 嵌入式 C 程序员编写的 Rust 指南
这是来自 Google OpenTitan 团队,给嵌入式 C 程序员专门打造的一份 Rust 指南。
张汉东
2021/10/13
5.3K0
详细解答!从C++转向Rust需要注意哪些问题?
导语 | 在日常开发过程中,若长期使用C++语言,在初次使用Rust的过程中可能会碰到一些问题。本文尝试从C++的角度来说明在使用Rust时需要特别注意的一些地方,特别是其中的思维方式的转变(mind shift)。 一、赋值的move语义 (一)C++ vs Rust C++的赋值操作是copy语义,在不考虑优化的情况下,从语义的角度理解,赋值后内存中的某个对象即变成了两份。修改新的对象并不会对旧对象产生副作用。 ‍ 而Rust对赋值操作有更加精细的控制,以下两条: 对于所有实现了Copy trai
腾讯云开发者
2021/10/15
9900
Rust IntoIterator与Iterator区别
Rust 中IntoIterator和Iterator是2个密切相关但用途不同的trait,顾名思义IntoIterator用于从某个类型创建Iterator.
路之遥
2025/05/06
630
遍历数组,我翻车了-Rust
其他的多数语言中的, 数组直接就是可迭代的,无论是下标遍历还是迭代器迭代,都可以运行,所以刚开始用Rust的时候就翻车了。
江湖安得便相忘
2019/11/05
3K0
遍历数组,我翻车了-Rust
听GPT 讲Rust源代码--library/core/src(1)
题图来自 The first unofficial game jam for Rust lang![1]
fliter
2023/11/14
3290
听GPT 讲Rust源代码--library/core/src(1)
Rust学习笔记Day19 你真的了解集合容器吗?
其中容器类型的占比还是非常大的。 定义:只要是把某种特定的数据封装在某个数据结构中,这个结构就是容器如:
用户1072003
2023/02/23
5340
Rust学习笔记Day19 你真的了解集合容器吗?
Rust 中调用 GitHub Web API - Rust Cookbook 中文版
Rust 生态中的 reqwest 和 serde 两个 crate,对使用 Rust 语言进行各类开放 web API 调用提供了强力支持。我们使用 Rust 语言及其相关 crate,对 github web api 进行调用,通过从查询 GitHub API、检查 API 资源是否存在、使用 GitHub API 创建和删除 Gist、使用 RESTful API 分页、处理速率受限 API 等几个实例来做一个展示。
niqin.com
2022/06/30
1.2K0
Rust 中调用 GitHub Web API - Rust Cookbook 中文版
go 开发者的 rust 入门
即:在任意给定时间,要么 只能有一个可变引用,要么 只能有多个不可变引用。引用必须总是有效的。
王磊-字节跳动
2021/11/27
1.9K0
一网打尽 Rust 语法
大家好,我是「柒八九」。一个「专注于前端开发技术/Rust及AI应用知识分享」的Coder
前端柒八九
2024/04/30
1770
一网打尽 Rust 语法
【Rust 易学教程】第 1 天:Rust 基础,基本语法
今天,我们正式进入 Rust 基础的学习。在本文的内容中,我会为大家介绍以下内容:
前端修罗场
2023/11/12
5040
听GPT 讲Rust源代码--src/tools(25)
在Rust源代码中,suspicious_command_arg_space.rs文件位于clippy_lints工具包的methods目录下,用于实现Clippy lint SUSPICIOUS_COMMAND_ARG_SPACE。
fliter
2024/01/12
1360
听GPT 讲Rust源代码--src/tools(25)
听GPT 讲Rust源代码--library/core/src(3)
题图来自 Mozilla releases Rust 0.1, the language that will eventually usurp Firefox's C++[1]
fliter
2023/11/14
2410
听GPT 讲Rust源代码--library/core/src(3)
听GPT 讲Rust源代码--library/alloc
在Rust源代码中,rust/library/alloc/benches/slice.rs文件的作用是对&[T]类型(切片类型)进行性能基准测试。该文件包含了对切片类型的一系列操作的基准测试,例如切片迭代、切片排序、切片的iter和into_iter方法等。
fliter
2024/02/26
1640
听GPT 讲Rust源代码--library/alloc
相关推荐
Rust开发⼲货集(1)--迭代器与消费器
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档