Rust入门:路径(Path)

为了在Rust的模块中找到某个条目,需要使用路径

路径分为两种方式:

- 相对路径:从crate root开始,使用crate名或者字面值crate

- 绝对路径:从当前模块开始,使用self,super或当前模块的标识符

路径至少由一个标识符组成,标识符之间用::

mod car{
    pub mod volkswagen_group {
        pub fn get_audi(){
            println!("this is audi")
        }
    }
}

pub fn get_car(){
    //绝对路径
    crate::car::volkswagen_group::get_audi();
    //相对路径
    car::volkswagen_group::get_audi();
}
私有边界

模块不仅可以组织代码,还可以定义私有边界

如果想把函数、struct等设为私有,可以将它放在模块中

Rust中所有条目(函数、方法、 enum、 struct、模块、常量)默认都是私有的

父级模块无法访问子模块中私有条目

子模块可以使用父级模块中的条目

pub关键字

使用pub关键字可以把条目标记为公共的

上述例子中我们使用了pub关键字把模块volkswagen_group和函数get_audi()标记成了公共的,所以get_car()函数才能调用他们。

super关键字

调用父级模块的函数时用super修饰

mod car{
    pub mod volkswagen_group {
        pub fn get_audi(){
            //相对路径
            get_porsche();
            //相对路径
            super::geely::get_xingrui();
            //绝对路径
            crate::car::geely::get_xingrui();
        }
        pub fn get_porsche(){}
    }
    pub mod geely{
        pub fn get_xingrui(){}
    }
}
pub struct

pub可以把struct修饰成公共的

但是struct里的字段默认还是私有的,也可以用pub修饰字段


pub struct Student{
    pub name: String,
    age:i32,
    sex:i32
}
pub enum

pub可以把enum修饰成公共的

加了pub的enum里的变体会默认变成公共的

pub enum IpAddress {
    Ipv4,
    Ipv6
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cq-mengjiajie

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值