1安装
http://doc.rust-lang.org/0.12.0/guide.html
$ curl -s https://static.rust-lang.org/rustup.sh | sudo sh卸载
curl -s https://static.rust-lang.org/rustup.sh | sudo sh -s -- --uninstall2.hello
fn main() { println!("Hello, world!");}
我配置了geditor tab缩进2格, 不喜欢太多。。本篇只提与java比起来不一样的,这里没什么特别的,!号表示这里是一个宏。rust是个expression oriented lang,;号表明一个表达式的结束。
rustc main.rs直接生成main或main.exe可执行文件, 目标机器不用装rust环境即可运行
3Cargo相当于java中的maven
把main.rs扔到src下,配置文件pom.xml对应Cargo.toml[package] name = "hello_world" version = "0.0.1" authors = [ "Your name" ][[bin]] name = "hello_world"
tom写的lang叫toml。。 这里有两张表,第一部分是meta信息,第二部分表示要build一个binary而不是library,编译用cargo build和maven一样,输出在target目录,和maven一样。
以后就不再用rustc而用cargo build命令
4变量绑定
let x = 5i;这里的i不表示他是虚数,而表示他是一个integer let x:int = 5;一下可以绑定多个let (x,y)=(1i,2i) let变量默认是final的和scala中的val一样, 可变的呢?let mut x:int = 5(有点繁琐!)let x:int;
此时x没有初始化,不能直接使用(和java不一样), 最后是在println中可以使用{}占位,和java一样5 If
let x = 5i;if x == 5i { println!("x is five!");} else { println!("x is not five :(");}或
let x = 5i;let y = if x == 5i { 10i} else { 15i};5.1 Expression &Statements
只有两类statements,其它全为expression,其中expression有返回值,statements没用返回值.
第一种没有返回值的statements: let语句 不可以这么写let x = (let y = 5i);第二种返回值为unit的statement叫expression statement: 它的作用是把expression变成statement;
rust的语法要求statement后面必须紧跟statement,所以你得用;号把expression分隔开,正确的写法
let x = 5i;let y: int = if x == 5i { 10i } else { 15i };错误的写法:
let x = 5i; let y: int = if x == 5i { 10i; } else { 15i; };
error: mismatched types: expected `int` but found `()` (expected int but found ())分号将expression转为statement,丢弃原有的返回值,返回() ,读作unit
6,函数
和java一样,参数必须声明类型fn main() { print_sum(5, 6);}fn print_sum(x: int, y: int) { println!("sum is: {}", x + y);}带返回值的
fn add_one(x: int) -> int { x + 1}不要用retur n,
fn foo(x: int) -> int { if x < 5 { return x; } return x + 1;}7.注释 // 单行注释
/// 文档注释
在斜线和文字之间留一个空格以示美观, 文档注释用markdown语法,用rustdoc工具自动生成文档/// `hello` is a function that prints a greeting that is personalized based on/// the name given.////// # Arguments////// * `name` - The name of the person you'd like to greet.////// # Example////// ```rust/// let name = "Steve";/// hello(name); // prints "Hello, Steve!"/// ```fn hello(name: &str) { println!("Hello, {}!", name);}
end!