woshidama323 / LearnRust

2 stars 0 forks source link

phala的维护初步测试case 整理 #3

Open woshidama323 opened 3 years ago

woshidama323 commented 3 years ago

在调研phala项目的过程中 笔记

目标:

  1. 测试笔记,代码结构是如何的
woshidama323 commented 3 years ago

cargo.toml格式理解与关键词

woshidama323 commented 3 years ago

rust 语法笔记 先记录到这里

### 1. 感叹号 比如  println!() 表示这是一个宏 不是一个函数,主要与普通函数做区别

感叹号参考资料

### 2. mod.rs的作用 类似于python中的__init__.py 用于将目录作为一个package的声明 定义等信息
两种方法
code/
  `- main.rs
   - something/
     `- mod.rs  ## 要么这样 是something这个module的定义等信息 要么 直接用something.rs来定义

mod.rs的作用

### 3. pub关键词的作用
pub 是rust Visibility机制的一个关键词,类似于 c++中的public 
rust中默认情况下 函数或者变量是私有的,
但是通过pub 来修饰  便可以从该module外部访问到
### 4. impl
为了一个结构体 实现几个函数

impl意义

### 5. for
三个场景下需要用到
Iteration with in,  ## for 循环中 for i in 1..5
trait implementation with impl, or  ### 跟在impl之后
higher-ranked trait bounds (for<'a>). ### 
### 6. Traits: Defining Shared Behavior 
比较特殊的类型 trait  类似于golang中的interface

rust trait 与golang interface 比较好的比较说明

//定义函数的时候,一种是明确函数参数类型的,另外一种是不确定函数的参数类型的,对于不确定函数类型参数的,则可以如
//下定义的方法来定义
//定义函数largest的参数为类型T   参数名为list 是一个类型为T的slice 返回值也为T 注意这里返回值不需要用return
fn largest<T>(list: &[T]) -> T {
    let mut largest = list[0];

    for &item in list {
        if item > largest {
            largest = item;
        }
    }

    largest
}

fn main() {
    let number_list = vec![34, 50, 25, 100, 65];

    let result = largest(&number_list);
    println!("The largest number is {}", result);

    let char_list = vec!['y', 'm', 'a', 'q'];

    let result = largest(&char_list);
    println!("The largest char is {}", result);
}