Rust练习生笔记

本文章主要是为了自学rust语言圣经,记录自学Rust之路,如有错误,请各位大佬指正

Rust语言的特点

高性能

Rust 速度惊人且内存利用率极高。由于没有运行时和垃圾回收,它能够胜任对性能要求特别高的服务,可以在嵌入式设备上运行,还能轻松和其他语言集成。

可靠性

Rust 丰富的类型系统和所有权模型保证了内存安全和线程安全,让您在编译期就能够消除各种各样的错误。

生产力

Rust 拥有出色的文档、友好的编译器和清晰的错误提示信息, 还集成了一流的工具——包管理器和构建工具, 智能地自动补全和类型检验的多编辑器支持, 以及自动格式化代码等等。

boolean(布尔类型): 

true,  false

Integer(整数类型):

1,2,50,99,-2

Double / Float(浮点数类型):

1.1,5.5 , 200.0001, 2.0

Character(字符类型):

' A',  'B', 'C', '6', '$'

String(字符串类型):

"hello"," 你好" ,"it's 42"


//  <-这个是Rust的注释
/*
     这个也是rust的注释
     多行注释
*/
/*
        变量类型
            标量类型:整型 浮点型 布尔类型 char类型
            符合类型:元组 数组 ()
        整数类型:
        大小         有符号            无符号
        8-bit         i8              u8
        16-bit        i16             u16
        32-bit        i32             u32
        64-bit        i64             u64
        128-bit       i128            u128
        arch          isize           usize
         isize and usize 取决于系统架构 64位 64  32位 32
         范围:-2^n-1 - 2^n-1 -1
         */
fn main() {

        //                 变量和常量
        let x1:u32 = 8;
        /* 变量:
    l       let 定义变量的关键字
            x 变量名
            u32 变量类型
            = 赋值
            =后面要赋的值是什么
            ;号结束
          1.虽然叫变量,但是在rust中变量默认是不可变的;
          2.创建一个变量的时候一定要给初始值 不然会报错;
        */
        let mut x2 = 8;
        x2 = 16;
        /*可变变量
        let 后面加 mut 关键字 可以使得这个变量可变
        开始x2=8 后面赋值16后 x2 =16
        */

        const PI_CONST:f32  = 3.14159;
        /*
         常量
          const关键字声明这个是一个常量
          PI_CONST 常量使用大写蛇形命名法
        */

       //   控制流
       
        if x1 == 8{
            println!("通过");
        }
        /*
            一个简单的if语句
            if(如果)  x1 ==(等于) 8 { 
                 打印输出:"通过"在终端
            }
           1.if 的 == 跟 = 是有区别的 前面一个是判断是否相等 后面一个是给变量赋值
           2.== 可以根据自己的需求 写 x1 > 8  x1 < 8  >= <= 来判断
        */
        
        if x1 > 8 {
            println!("通过");
        }else{
            println!("通过不了");
        }
        /*
        这个加了一个else在后面 如果通过不了的时候 可以打印通过不了后面的语句
        */
        
        if x1 > 8 {
            prinln("通过");
        }else if x1 < 8{
            println("通过");
        }else{
            println("通过不了");
        }
        /*
                这个加了 else if 这个语句 可以让我们再加一条条件判断 处理多重判断
        */
        
        let x:bool = true;    
        let a:u32 = if x { 6 }else{ 7 }; 
        println("{}",a);
        /*
         在let 中使用if
         if是个表达式 所以我们可以这样使用它
         判断 x 是真还是假 如果是真 返回 6 赋值给a 如果是假 返回7 给a 
         通过 println() 打印出来
        */

        let mut x:u32 = 5 ;
        loop {
            if x == 0  {
                break;
            }
            println!("{}:发射!!!!",x);
            x = x - 1;
        }
        /*loop 是一个循环 它可以一直循环 这段话
          在终端反复打印 一直到 使用ctrl+c停止i
          也可以使用break关键字来告诉程序何时停止loop循环
        */        

    let mut x:u32 = 1;
    while x <= 5{
        println!("循环第{}次",x);
        x = x + 1;
    }
    /*
    关键字 while x <= 5 判断条件{
        内容
    }
    当条件为真是执行循环 当条件为假是结束循环
    */


    for i in 1..5 {
        println!("{}",i);
    }
    /*
     for 循环 用来可以遍历用来元素
    */

}

struct User {
        username: String,
        active: bool,
        email: String,
        count: u64
}
/*
    通过关键字 struct 创建了一个User的结构体 在大括号里面定义了 不同类型 称之为字段
*/
// 定义了一个枚举类型
#[derive(Debug)]
enum color {
        red,
        green,
        blue, 
    
}
fn main() {

        let mut niko = User {
                        username:"niko".to_string(),
                        active:true,
                        email:"100@ema".to_string(),
                        count:78,
        };

          /* 创建一个结构体实例,并在里面加入数据 */

        /*从结构体中获取值 */
        println!("{}",niko.username);

        /* 改变结构体实例中的值 要给niko前面加mut关键字可变*/
        niko.username = "miko".to_string();


        let s = String::from("hello world");
        let hello = &s[0..5];
        let world = &s[6..];
        println!("{}",hello);  // 输出hello
        println!("{}",world);  // 输出 world
      /*
        字符串切片 通过索引的方式来获得字符串切片
       */

        //  创建一个元组 首先要说元组类型 然后元素写进去
        let tup :(i32,f64,u8) = (100,67.8,5);
        // 通过模式匹配的方式获取元素的值
        let (x,y,z) = tup;
        println!("{},{},{}",x,y,z);
        //也可以通过tup.的方式来访问
        println!("{}",tup.1);
       //使用了枚举
        let Red = color::red;
        println!("{:?}",Red);


        // 数组的定义 数组只能使用同一种数据类型
        let arr = [1,2,3,4,5];
        let slice = &arr[1..3];
        println!("{:?}",slice);
        //访问数组元素
        println!("{}",arr[0]);
            



}

 

持续更新.......

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值