刷新
rust学习十一.1、泛型(通用类型)

这是和大部分的语言差不多的一个概念,只不过实现上有一些区别而已。 所以,如果学过java,c#,c++,那么这应该很好理解。 虽然如此,还是有不少内容需要记录,只不过内容有一点小多。 注意:这是入门级别内容,只能涉及到一些基本的方面。 一、定义 英文 Generic /generics, 中文翻译为 ...

rust学习十、异常处理(错误处理)

在书籍中,中文译者翻译为错误,这是因为原文是"Error"。 但在很多语言中,都是书写为异常。 一、概述 rust的错误处理与众不同,前文已经提及:大家称为异常,它称为错误。 不可恢复的错误,可以大体称为panic(恐慌)! 太率性了.... 那么我们的问题是:除了一些的确不可处理的异常,rust是 ...

rust学习九.3-集合之哈希映射表

这里介绍的哈希映射表(HashMap)并非是java那样的万用表,限制很大。 不过,话说回来,rust应该是有类似java那样的映射表,不过不是这个哈希映射表。现在先谈论哈希映射表吧。 一、构成和定义 HashMap 是最不常用的,所以并没有被 prelude 自动引用。标准库中对 HashMap ...

rust学习九.2、集合之字符

按照作者的意思,字符不是看起来那么简单! 的确,字符在大部分语言中,都不是看起来那么简单! 字符的内容看起来很多,又很少! 多是因为涉及到编码、构成、方法(有许多方法)还有字符切片。 少是因为,其实和java等语言其实没有大的区别。 一、构成 rust的字符内部是 vec(u8)+方法,看起来和ja ...

rust学习九.1、集合之向量

一、纲要 定义 1. new Vec::new(); 2. 采用宏 vec![1, 2, 3]; 操作 0.读取 索引语法或者 get 方法 ,注意索引从0开始. vec[0]或者vec.get(0) vec[i] 不会改变所有权,但如果发生越界,则会导致程序终止 get(i) 返回的是一个Opti ...

rust学习八、包和模块

总体上,也没有什么特别的地方,和其它语言比较起来。 我们可以看懂熟悉的字眼:包括、模块、use、公共等等 如果是英文,则需要知道crate、pub。 本章节对应相关书籍的第七章节. 一、一个rust可执行程序的大体结构 就本章节而言,尚未接触到一个非常复杂的工程结构,据说有什么工作空间。 不考虑工作 ...

使用pgrx开发postgre插件

博主头像 pg插件开发建议在linux环境下进行, windows可以采用虚拟机的方式开发. 安装虚拟机环境 准备虚拟机, 使用的是ubuntu22.04, 太新的版本会依赖拉取有问题 安装开发工具和依赖: ​sudo apt-get update sudo apt-get install -y git cl ...

rust学习七、枚举

枚举是十分特别的类型,是因为和大部分语言中看起来不太一样。 最大的不同之一在于:允许每个成员具有不同的类型的属性 注:本文内容根据<<The rust programmming Language>>有关章节编写 如果没有特别说明,"rust学习"系列基本上都是根据此书编写,不再在后续的篇幅中说明 一 ...

rust学习六、简单的struct结构

rust的struct结构体是一个不错的东西,不像java,后者在17版本左右才可用。 有许多语言都有类似的东西,例如pascal有record。 在rust中,struct大体等于java的class,c#的class。 本文主要根据<<The rust programming language> ...

一文解秘Rust如何与Java互操作

博主头像 本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0许可协议。转载请注明来自 唯你 使用场景 JAVA 与 Rust 互操作让 Rust 可以背靠 Java 大生态来做更多事情,而 Java 也可以享受 Rust 语言特性的内存安全,所有权机制,无畏并发。 互操作的典型场景包括: 性能优 ...

rust学习二、入门之运行单个脚本

入门者,在搭建好环境好之后,接下来得先熟悉工具。有了趁手的工具,学起来才会快得多! 作为入门者,非常希望能够单独运行一个rust脚本,而没有必要一个练习就建立一个项目,或者在一个笨重的ide中运行一个脚本文件。 在https://crates.io上,我们可以找到各种各样的工具,有两个可以关注: c ...

rust学习四、控制语句

rust的控制语句和大部分语言没有什么区别,都是熟悉的for,while,loop,if。 比较不同的是,在绝大部分非常流行的语言中都有的switch,rust是没有的。 诸如c/c++,java,javascript,c#。连PL/SQL都有case when语句。 一、基本的for、while、 ...

rust学习五、认识所有权

在<<The rust programming language>>的中译版<<rust权威指南>>中,作者用了30页的篇幅来阐述这个问题。 如作者所言,所有权是学习rust语言的基础,不掌握这个,无需继续往下,所以,这是初学rust就必须会的。 正是所有权概念和相关工具的引入,Rust才能够在没有 ...

rust学习三、基本类型

本文内容摘自<<The rust programming language>>,作者:美国的steve klabnik ,Carol nichols。 中国工信出版社2020年出版,但在国外据说是2018年出版的。 关于本人的入门大部分来自此书。 不过此书由于出版的时间较早(假定是2018),那么那 ...

Rust的Reborrow机制

博主头像 最近,在使用Rust时遇到了Reborrow的概念,记录下来以备以后参考。 1. 起因 起因准备对数据进行Min-Max标准化处理,也就是将一系列数据映射到一个新的范围。 首先,需要遍历数据,找出其中的最大值和最小值,然后通过公式改变原始数据集的值。 Min-Max公式:标准化后的值 = (原始值 ...

Rust宏之derive的设计及实战

博主头像 Rust宏可以极大的简化编写的难度,学习好宏可以更好的减少冗余代码。 宏的基本概念 Rust中的宏可以分为两大类:声明宏(Declarative Macros)和过程宏(Procedural Macros)。 声明宏:也称为macro_rules!宏,使用macro_rules!关键字定义。它是一种 ...

函数

博主头像 Rust 代码中的函数和变量名使用 snake case 规范风格。在 snake case 中,所有字母都是小写并使用下划线分隔单词。这是一个包含函数定义示例的程序: fn main() { println!("Hello, world!"); another_function(); } fn a ...

数据类型

博主头像 Rust 是 静态类型 (statically typed) 语言,也就是说在编译时就必须知道所有变量的类型 使用 parse 将 String 转换为数字时,必须增加类型注解,像这样: let guess: u32 = "42".parse().expect("Not a number!"); 如 ...

变量与可变性

博主头像 变量 fn main() { let mut x = 5; println!("The value of x is: {x}"); x = 6; println!("The value of x is: {x}"); } 使用 let 可以申明一个不可变的变量,变量默认是不可改变的(immutabl ...