rust是一个基于表达式的语言,不过它也有语句。rust只有两种语句:声明语句和表达式语句,其他的都是表达式。基于表达式是函数式语言的一个重要特征,表达式总是返回值。声明语句rust的声明语句可以分为两种,一种为变量声明语句,另一种为Item声明语句。变量声明语句。主要是指let语句,如:let a = 8;let b: Vec<f64> = Vec::new();
在rust中,任何函数都有返回类型,当函数返回时,会返回一个该类型的值。我们先来看看main函数: fn main() { //statements }之前有说过,函数的返回值类型是在参数列表后,加上箭头和类型来指定的。不过,一般我们看到的main函数的定义并没有这么做。这是因为main函数的返回值是(),在rust中,当一个函数返回()时,可以省略。
参数声明rust的函数参数声明和一般的变量声明相仿,也是参数名后加冒号,冒号后跟参数类型,不过不需要let关键字。需要注意的是,普通变量声明(let语句)是可以省略变量类型的,而函数参数的声明则不能省略参数类型。来看一个简单例子:fn main() { say_hi("ruster");}fn say_hi(name: &str) { println!("Hi, {}", name);
现在的Rust资料,无论是Book还是RustByExample都没有统一而完全的介绍Rust的操作符。一个很重要的原因就是,Rust的操作符号和C++大部分都是一模一样的。一元操作符顾名思义,一元操作符是专门对一个Rust元素进行操纵的操作符,主要包括以下几个:-: 取负,专门用于数值类型。*: 解引用。这是一个很有用的符号,和Deref(DerefMut)这个trait关联密切。!: 取反。
元组(Tuple)在别的语言里,你可能听过元组这个词,它表示一个大小、类型固定的有序数据组。在 Rust 中,情况并没有什么本质上的不同。不过 Rust 为我们提供了一系列简单便利的语法来让我们能更好的使用他。let y = (2, "hello world");let x: (i32, &str) = (3, "world hello");// 然后呢,你能用很简单的方式去访问他们:// 用 let 表达式let (w, z) = y;
像其他现代编程语言一样,Rust提供了一系列基础的类型,我们一般称之为原生类型。其强大的类型系统就是建立在这些原生类型之上的,因此,在写Rust代码之前,必须要对Rust的原生类型有一定的了解。boolRust自带了bool类型,其可能值为true或者false。我们可以通过这样的方式去声明它:let is_she_love_me = false;let mut is_he_love_me: bool = true;
本章讲解 Rust 中的类型相关基础知识、运算符相关知识、和字符串的基本知识。
ifif letmatchif 表达式Rust 中的 if 表达式基本就是如下几种形式:// 形式 1if expr1 {}// 形式 2if expr1 {}else {}// 形式 3if expr1 {}else if expr2 { // else if 可多重}else {}相对于 C 系语言,Rust 的 if 表达式的显著特点是:判断条件不用小括号括起来;它是表达式,而不是语句。
Rust 是多范式语言,当然支持命令式编程风格。本章讲解 Rust 中的几种基本程序结构。
曾几何时,对于使用惯了C/C++语言的猿们来说,项目代码的组织与管理绝对是一场噩梦。为了解决C/C++项目的管理问题,猿神们想尽了各种办法,开发出了各种五花八门的项目管理工具,从一开始的automake到后来的cmake、qmake等等,但结果并不如人意,往往是解决了一些问题,却引入了更多的问题,C/C++猿们经常会陷入在掌握语言本身的同时,还要掌握复杂的构建工具语法的窘境。
输入输出是人机交互的一种方式。最常见的输入输出是标准输入输出和文件输入输出(当然还有数据库输入输出,本节不讨论这部分)。标准输入标准输入也叫作控制台输入,是常见输入的一种。例子1:use std::io;fn read_input() -> io::Result<()> { let mut input = String::new(); try!(io::stdin().read_line(&mut input)); println!
注释在 Rust 里面注释分成两种,行注释和块注释。它的形式和 C 语言是一样的。两种注释分别是:行注释使用 // 放在注释前面。比如:// I love Rust, but I hate Rustc.块注释分别使用/*和*/包裹需要注释的内容。比如:/* W-Cat 是个大胖猫,N-Cat 是个高度近视猫。*/文档Rust 自带有文档功能的注释,分别是///和//!。
函数要声明一个函数,需要使用关键字fn,后面跟上函数名,比如fn add_one(x: i32) -> i32 { x + 1}其中函数参数的类型不能省略,可以有多个参数,但是最多只能返回一个值,提前返回使用return关键字。Rust编译器会对未使用的函数提出警告,可以使用属性#[allow(dead_code)]禁用无效代码检查。
IfIf是分支 (branch) 的一种特殊形式,也可以使用else和else if。与C语言不同的是,逻辑条件不需要用小括号括起来,但是条件后面必须跟一个代码块。Rust中的if是一个表达式 (expression),可以赋给一个变量:let x = 5;let y = if x == 5 { 10 } else { 15 };
结构体结构体 (struct) 是一种记录类型,所包含的每个域 (field) 都有一个名称。每个结构体也都有一个名称,通常以大写字母开头,使用驼峰命名法。元组结构体 (tuple struct) 是由元组和结构体混合构成,元组结构体有名称,但是它的域没有。当元组结构体只有一个域时,称为新类型 (newtype)。没有任何域的结构体,称为类单元结构体 (unit-like struct)。
数组和动态数组数组 arrayRust 使用数组存储相同类型的数据集。[T; N]表示一个拥有 T 类型,N 个元素的数组。数组的大小是固定。例子:fn main() { let mut array: [i32; 3] = [0; 3]; array[1] = 1; array[2] = 2; assert_eq!([1, 2], &array[1..]); // This loop prints: 0 1 2 for x in &array { println!("{} ", x);
本章的目的在于快速上手(Quickstart),对Rust语言建立初步的印象。前面的章节中,我们已经安装好了Rust,配置好了编辑器,相信你一定已经跃跃欲试了。注意: 本章的一些概念只需要大概了解就行,后续的章节将会有详细的讲解,但是本章的例子请务必亲自手敲并运行一遍。下面,让我们开始动手写Rust程序吧!ps:本章原始章节由 ee0703 书写的。
本文是使用VisualRust和VS GDB Debugger / VisualGDB 完成在VisualStudio中,编辑和调试Rust程序。安装Rust, Cargo首先需要下载Rust, 下载地址https://www.rust-lang.org/downloads.html这里一定要下windows GNU ABI的版本, 因为我们要用GDB来调试.另外,机器上也需要安装Visual Studio2013或2015。
下载 Rust 源代码(供 racer 使用)从github下载git clone https://github.com/rust-lang/rust.git从官网下载源代码包下载地址: https://static.rust-lang.org/dist/rustc-nightly-src.tar.
rustup 是rust官方的版本管理工具。应当作为安装 Rust 的首选。项目主页是: https://github.com/rust-lang-nursery/rustup.rsFeatures管理安装多个官方版本的 Rust 二进制程序。配置基于目录的 Rust 工具链。安装和更新来自 Rust 的发布通道: nightly, beta 和 stable。接收来自发布通道更新的通知。从官方安装历史版本的 nightly 工具链。
关注时代Java