zoukankan      html  css  js  c++  java
  • rust学习笔记(二)变量和类型

    变量声明 let v1 :i32 = 10; rust官方说这有诸多优点,其实是方便编译器开发程序员。。

    let 定义常量。可变常量需要加上mut。

    let可以对变量重复定义成任意类型

    let x = 1
    
    let x = true
    

    前面的语句为啥没有定义类型,这个功能就像c++的auto一样,自动推导了类型。

    显示的定义别名

        type tInt = u32;
        let x2 :tInt = 20;
    

    静态变量

      静态变量它的声明周期为整个程序运行期间

    定义需要注意

    1. 必须马上初始化
    2. 初始化时必须编译器认为返回常量
    3. 允许加上mut但是必须使用unsafe

    static AAA:i32 = 0; println!("{:?}", AAA); static mut AAA2 :i32 = 1; unsafe{ AAA2 = 21; println!("{:?}", AAA2); }

      

    const定义常量: const G2 :i32 =0;

     常用的数据类型和别的语言没啥大的差别

    bool

    char 不是1个字节是4个字节。需要使用1个字节可以使用u8数组

    i8 u8 i16 u16 i32 u32 i64 u64 i128 u128 isize usize

    整数溢出,rust提出了解决方案

    • checked_* 返回None
    • saturating_* 返回最大值
    • wrapping_* 返回溢出的截断

    f32 f64

    浮点数可能返回特别的值需要注意了啊

    enum FpCategory{

      Nan, 空

      Infinite, 无限大

      Zero,0

      Subnormal, 小数位超出位数收敛的情况

      Normal 正常

    }

    指针类型和智能指针这些以后再说

    Box<T> 有所有权,无权释放内存

    &T 无权释放内存,无权写

    & mut T 无权释放内存,有权写

    *const T 只读指针,无权写

    *mut T有权写

    Rec<T>共享所有权,线程不安全

    Act<T>原子型引用指针,共享所有权,线程安全

    Cow<a,T> 写时复制

    类型转换不支持隐式的转换,这种新语言有优势,使用as,后续一般使用标准库转换。

    复合类型

     tuple元组

       	let tup1 = (2131i32, "abc");
       	println!("{} {}", tup1.0, tup1.1);
    

     有点奇妙的是允许定义空元组   let ept:() = () 占用内存空间为0

    struct 结构

    1        struct Poinit{
    2            x :i32,
    3            y :i32,
    4        }
    5        let p = Poinit{x:1, y:2};

    也有空结构  struct AA; struct AA2(); struct{};

    type struct结构,没有名字的结构体

    struct AA(i32,i32)

    struct Age(i32);
    let age2 = Age(1);
    println!("{:?}", age2.0);

    enum 主要用在匹配模式match一起使用

    类型递归定义,不能包含自身。

    类似c

    type struct Node{
        void *data;
         struct Node *next;  
    }
    
    
    struct Rex{
        data:i32,
        next:Box<Rex>,  
    }
  • 相关阅读:
    【黑金视频连载】FPGA NIOSII视频教程(08)RTC实验
    【黑金研发】【ABS05】函数信号发生器进行中…
    【黑金视频连载】NIOSII视频教程(05)电平中断实验
    【新品发布】正式发布 [ ABS05 ] 函数信号发生器
    【黑金视频连载】FPGA NIOSII视频教程(13)IIC实验实验
    【黑金视频连载】NIOS II视频教程(01)软件安装
    解决input设置背景后,在ie7下浏览内容过长背景跟着滚动
    命令开启数据库服务器
    装win7 旗舰版的蛋疼经历,装后疑难杂症及解决办法
    海量jquery插件
  • 原文地址:https://www.cnblogs.com/beckbi/p/11516557.html
Copyright © 2011-2022 走看看