rust包

crate

库(箱)

库中包含文件:

crate
 └── front_of_house
     ├── hosting
     │   ├── add_to_waitlist
     │   └── seat_at_table
     └── serving
         ├── take_order
         ├── serve_order
         └── take_payment


#[macro_use]

使用#[macro_use] 可以使被注解的module模块中的宏被应用(替换)到当前作用域中;

或者注释crate中的宏应用到当前crate作用域中。

总之:

1,引入其他文件(模块)定义的宏

2,引入其他库的宏。

#[macro_use]

extern crate log;

引入log库中的宏

链接

#[macro_export]

在每个宏定义前面添加 #[macro_export]注释,表示这些宏可以被外部的 crate 使用。

anyhow

anyhow库中包含有有一些Error特征,包括Result<T,E>.

而且使用起来更方便。

引入anyhow之后,使用Result<T, anyhow::Error>等价于anyhow::Result<T>,不影响Ok()的返回

使用需引入依赖包:

[dependencies]

anyhow = "1.0"

cfg---条件编译

就是按照指定的条件进行编译,它允许你基于一个传递给编译器的标记编译代码

所有的#[ ]都是标注者位置以下的代码的属性。

链接

条件编译可能通过两种不同的操作:

  • cfg 属性:在属性位置中使用 #[cfg(...)]
  • cfg! 宏:在布尔表达式中使用 cfg!(...)
fn main(){
    #[cfg(not(windows))]
    println!("do--not windows");
    #[cfg(linux)]
    println!("do--linux");
    if cfg!(target_os="linux"){
        println!("cfg!--linux");
    }
    if cfg!(target_os="windows"){
        println!("cfg!--windows");
    }
}

cfg!一定要有的等号
注意有等号时有""

使用不需要引入模块

use

指定路径两种方法:

1,::

2,{ }

mod windiws{
    pub mod ipc;
}

std

fs

所有文件操作只需要引入:

File,OpenOptions

use std::fs::{File,OpenOptions};
fn main(){
    let file=OpenOptions::new().read(true).write(true).create(true).open("foo.txt");
}

serde_json::from_str

用字符串给匹配给某个数据类型

use serde::{Deserialize,Serialize};
use serde_json::{self,Result};
use anyhow;

#[derive(Deserialize, Debug)]
struct Student{
    name:String,
    age:i32
}
fn main()->anyhow::Result<()>{
    let s=r#"{"name":"fangfang","age":12}"#;
    let st1:Student=serde_json::from_str(s)?;
    println!("{:?}",st1);
    Ok(())
}

1,main函数有返回值就一定要在函数名之后加上返回值;
2,使用的字符串一定要用R#  #包起来;
3,数据结构的字段用”“引起了,:后面是字段值

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值