Rust语言的一些特性(基于表达式的系统编程语言?)

1、let mut x = 10i; 用学术的话来说,let代表文法级别的名字绑定(到value对象)

println!是宏,第一眼看到它时还以为是学习Ruby,!代表函数有副作用呢

destructuring let:解构绑定这个概念来自于LISP/Erlang?

2、表达式语言:if是表达式;加上分号就变成语句;return x;等同于直接的一个x

还有,它的if/for/while的条件判断不用加()圆括号,这跟Swift是一致的(就是感觉有点别扭)

3、函数原型:fn f(x: int, y: &str) -> () { ... }

这里使用的语法风格跟C++ 11、Scala似乎都差不多。

4、String是utf-8编码的Unicode字符序列(k,居然强制编码了)

string.as_slice() == "Hello" 对比 string == "Hello".to_string() 这里的概念有点怪异,需要好好想一想(语言设计者到底想表达什么意思?)

5、Tuple,Struct,Tuple Struct——这3者的区分倒是蛮有意思的,Tuple这个概念应该是来自于Python?对应C++ STL里的pair模板

6、Vector(数组)

let nums = [1i, ..20]; // Shorthand for an array of 20 elements all initialized to 1

7、标准输入:

let input = std::io::stdin().read_line().ok().expect("Failed to read line"); //IoResult<T> ?

8、Cargo包管理器的配置文件后缀名 .toml 取得不大好,感觉有点怪异

9、rand::random::<int>(); 见鬼,这里函数模板实例化的语法也很怪异

作者到底有没有在用心设计语言???

10、crates(独立编译单位?)与模块

mod hello {
    pub fn print_hello() {
        println!("Hello, world!");
    }
}

11、集成的单元测试支持?

#[test]

这里的属性标注为什么一定要加一个#呢?防止语法解析误解析为Vector?但是#已经在许多脚本语言中用作行注释了,这个设计不大好

12、指针

(1)引用:let y = &x; 可以直接引用字面量常量

let mut x = 5i;
let y = &mut x;

(2)拥有关系、借用与生命周期

(3)装箱(把原语封装为堆对象?)

(4)Rc与Arc:(自动)引用计数,不能有循环引用!

13、模式匹配

let mut x = 5i;

match x {
    ref mut x => println!("Got a mutable reference to {}", x),
}

14、闭包

let add_one = |x| { 1i + x };

15、proc(这个概念应该是来自于Ruby,不过现在coroutine这么流行,proc没准过时了?)

16、迭代器

for num in nums.iter() { ... }

非得加个.iter()吗?

17、消费者(略)

18、再次学习Scala/C#/Haskell:

let x: Option<int> = Some(5i);

19、Traits(暂略)

20、任务Tasks:这个地方倒是跟Python/Go等有的一拼

21、Unsafe(~C#):用于跟外部数值计算模块连接?

来源:http://doc.rust-lang.org/guide.html

时间: 2024-08-24 15:37:33

Rust语言的一些特性(基于表达式的系统编程语言?)的相关文章

Atitit.rust语言特性&#160;attilax&#160;总结

Atitit.rust语言特性 attilax 总结 1. 创建这个新语言的目的是为了解决一个顽疾:软件的演进速度大大低于硬件的演进,软件在语言级别上无法真正利用多核计算带来的性能提升.1 2. 不会出现Null指针等等1 2.1.1. Rust 1.1 稳定版 更新内容1 2.1.2. Rust 1.2 测试版 更新内容2 3. RAII2 3.1. 无数据竞争(Data Race)…无需竞争的并发,Rust能够确保在并发编程中的数据安全3 4. 是基于继承的组合,Rust能基于继承实现组合,

Rust语言——无虚拟机、无垃圾收集器、无运行时、无空指针/野指针/内存越界/缓冲区溢出/段错误、无数据竞争

2006年,编程语言工程师Graydon Hoare利用业余时间启动了Rust语言项目.该项目充分借鉴了C/C++/Java/Python等语言的经验,试图在保持良好性能的同时,克服以往编程语言所存在的问题.其最大的特点在于保持较高的运行效率.深入的底层控制和广泛应用范围的同时,解决了传统C语言和C++语言中的内存安全问题.2009年,Mozilla接手Rust项目,创建了以Graydon为首的专业全职开发团队,并且开放了该项目的源代码.2012年1月,第一个面向公众的预览版本--v0.1 发布

Rust语言的多线程编程

Concurrency并发 在计算机科学上,并发Concurrency 和并行 parallelism是非常重要的话题,也是软件产业一个热门的话题.电脑有了越来越多的的核,但喝多程序员没有准备好充分利用它们. Rust的内存安全特性也应用于并发.Rust程序必须内存安全,没有数据竞争.Rust的类型系统 很胜任这工作,很容易让你理解在编译时的并行代码. 在谈论Rust并发特色之前,了解一些东西很重要:Rust是一门足够低级的语言,所有这些都由标准库提供,而不是语言本身.这意味着如果你你不喜欢Ru

QCon2016演讲《Rust语言的核心竞争力》总结和补充

应 QCon北京2016|全球软件开发大会 主编臧秀涛邀请,我(Liigo)于2016年4月23日在大会上做主题演讲<Rust编程语言的核心优势和核心竞争力>(PDF演讲稿).由于是初次登台,现场表现不佳,个人不是很满意.故做本文对此次演讲进行总结和补充. 核心三要素:系统编程,零运行时,内存安全 我把Rust编程语言的核心优势和核心竞争力概括为三个要素:系统编程,零运行时,内存安全.在强调底层控制的系统编程领域,同时保持极小的运行时开销和极高的运行时效率,又保证了系统内存安全的现代编程语言,

Rust语言

Rust语言 https://doc.rust-lang.org/stable/book/ http://www.phperz.com/article/15/0717/141560.html Rust是一款全新的系统编程语言,专注于安全性和性能,致力于打造更高效.更可靠的系统.同一时候,Rust也是Mozilla新一代浏览器引擎Servo的编写语言,希望能在确保安全性的同一时候提升在移动设备上的性能和表现. on command installation: $ sudo curl -sf -L

【Win 10 应用开发】UI Composition 札记(七):基于表达式的动画

上一篇烂文中,老周给大伙伴们介绍过了几个比较好玩的动画.本篇咱们深化主题,说一说基于表达式的动画.这名字好理解,就是你可以用公式 / 等式来产生动画的目标值.比如,你想让某个可视化对象的高度减半,你的表达可以这样写: width / 2,其中,width 表示某对象的宽度. 既然说到基于表达式的动画了,就得介绍一个重要的类型:ExpressionAnimation,它专用来实现表达式动画的.它有一个 Expression 属性,字符串类型,用来设置计算动画目标值的等式. 有关表达式的语法,老周就

Java语言编程学习之Lambda表达式设计和架构的原则[图]

Java语言编程学习之Lambda表达式设计和架构的原则[图]:大家都知道,Lambda表达式是对Java语言的一点简单改进,在JDK标准类库中,运行它的方式各种各样.但是大多数的Java代码都不是由开发JDK的程序猿写的,而是像我们这样的普通程序猿.很多人都会碰到过这样的情况:你实现了一个新功能或修复了一个缺陷,并且对自己的修改很满意.但其他人看了你的代码后--也许发生在代码审查环节,完全不买账!对于什么是好代码,什么是坏代码,存在分歧很正常!设计模式的改变设计模式是人们熟悉的另一种设计思想,

5分钟APIG实战: 使用Rust语言快速构建API能力开放

序言:Rust语言简介参与过C/C++大型项目的同学可能都经历过因为Null Pointer.Memory Leak等问题"被" 加班了不知道多少个晚上.别沮丧,你不是一个人,Mozilla Firefox的开发者们同样经历过这个问题.浏览器可以说是我们日常使用最为频繁的软件了,目前主流的浏览器主要 有Google Chrome.Internet Explorer.Mozilla Firefox.为了提升用户体验,Mozilla就已经启动了多线程渲染的计划.然而,面对大型的C/C++工

半个月使用rust语言的体验

从第一次下载rust语言的编译器到今天刚好第14天. 简单说一下对这个语言的感觉吧. 一.性能 把以前用java写的一个中文地址切分的算法,用rust重新实现了一下(https://github.com/naturemickey/addressCut_use_rust).运行的速度上,rust的release版本要比java快上一倍左右. java版本的代码量是800多行,而rust版本的代码量是600多行. 这个体验还是很不错的,毕竟才刚刚开始学习rust语言,很多代码自己都觉得写得丑陋无比(