Copyright © 2022-2024 aizws.net · 网站版本: v1.2.6·内部版本: v1.23.3·
页面加载耗时 0.00 毫秒·物理内存 62.1MB ·虚拟内存 1299.5MB
欢迎来到 AI 中文社区(简称 AI 中文社),这里是学习交流 AI 人工智能技术的中文社区。 为了更好的体验,本站推荐使用 Chrome 浏览器。
结构体的字段也是一个可见性的层次。字段默认拥有私有的可见性,也可以加上 pub 修 饰语来重载该行为。只有从结构体被定义的模块之外访问其字段时,这个可见性才会 起作用,其意义是隐藏信息(即封装,encapsulation)。
mod my { // 一个公有的结构体,带有一个公有的字段(类型为泛型 `T`) pub struct OpenBox<T> { pub contents: T, } // 一个公有的结构体,带有一个私有的字段(类型为泛型 `T`) #[allow(dead_code)] pub struct ClosedBox<T> { contents: T, } impl<T> ClosedBox<T> { // 一个公有的构造器方法 pub fn new(contents: T) -> ClosedBox<T> { ClosedBox { contents: contents, } } } } fn main() { // 带有公有字段的公有结构体,可以像平常一样构造 let open_box = my::OpenBox { contents: "public information" }; // 并且它们的字段可以正常访问到。 println!("The open box contains: {}", open_box.contents); // 带有私有字段的公有结构体不能使用字段名来构造。 // 报错!`ClosedBox` 含有私有字段。 //let closed_box = my::ClosedBox { contents: "classified information" }; // 试一试 ^ 取消此行注释 // 不过带有私有字段的结构体可以使用公有的构造器来创建。 let _closed_box = my::ClosedBox::new("classified information"); // 并且一个结构体中的私有字段不能访问到。 // 报错!`content` 字段是私有的。 //println!("The closed box contains: {}", _closed_box.contents); // 试一试 ^ 取消此行注释 }
use 声明可以将一个完整的路径绑定到一个新的名字,从而更容易访问。// 将 `deeply::nested::function` 路径绑定到 `other_function`。use deeply::nested: ...