rust语言基础pub关键字及Some语法示例

 更新时间:2023年07月19日 10:53:43   作者:子栖  
这篇文章主要为大家介绍了rust语言基础pub关键字及Some语法示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

rust语言pub关键字语法

在rust中,pub是一个关键字,用于指定一个项的可见性。它可以被用来控制模块(module)中的函数、结构体、枚举、常量、trait等的可见性。

如果一个项被标记为pub,则可以被外部的模块访问和使用。如果一个项没有被标记为pub,则它只能在当前模块内部访问。

// 模块定义
mod foo {
    // 函数定义,没有标记 pub
    fn private_function() {
        println!("This is a private function.");
    }
    // 函数定义,标记 pub
    pub fn public_function() {
        println!("This is a public function.");
    }
    // 结构体定义,标记 pub
    pub struct PublicStruct {
        pub field1: i32,
        field2: i32,
    }
    // 枚举定义,标记 pub
    pub enum PublicEnum {
        Option1,
        Option2,
    }
}
// 在另一个模块中使用 foo 模块中的公共函数和结构体
fn main() {
    foo::public_function(); // 可以调用公共函数
    let my_struct = foo::PublicStruct { field1: 42, field2: 13 }; // 可以创建公共结构体的实例
    // 编译错误:private_function 是私有函数,不能被访问
    // foo::private_function();
}

Rust中的Some

1、首先要知道什么是Option和Result

来源:

许多语言使用null/nil/undefined类型来代表空的输出和处理异常错误。Rust跳过了,特别是防止空指针异常之类的问题,由于异常等原因导致敏感数据泄漏等等。相反,Rust提供了两个特殊的类枚举:Option和Result就是来处理以上的问题

内容:

  • 可选的值要么是Some要么是没有值/None

Result要么用成功/Ok要么是失败/Err

// An output can have either Some value or no value/ None.
enum Option<T> { // T is a generic and it can contain any type of value.
  Some(T),
  None,
}
// A result can represent either success/ Ok or failure/ Err.
enum Result<T, E> { // T and E are generics. T can contain any type of value, E can be any error.
  Ok(T),
  Err(E),
}

并且不需要单独引入它们

Option的基础用法:

在写一个函数或者数据类型的时候:

  • 如果一个函数的参数是可选的
  • 如果函数是非空的并且输出的返回可能不是空值
  • 如果一个值,活着是一个属性的数据类型可能是空

2、我们不得不使用Option作为它们的数据类型

例如,一个函数的输出可能是&str类型或者是输出是空,函数的返回类型可以被设置为 Option<&str>

fn get_an_optional_value() -> Option<&str> {
    //if the optional value is not empty
    return Some("Some value");
    //else
    None
}
struct Name {
  first_name: String,
  middle_name: Option<String>, // middle_name can be empty
  last_name: String,
}

以上就是rust语言基础pub关键字及Some语法示例的详细内容,更多关于rust语言pub Some语法的资料请关注脚本之家其它相关文章!

相关文章

  • Rust文件I/O操作多种场景应用笔记

    Rust文件I/O操作多种场景应用笔记

    这篇文章主要介绍了Rust文件I/O操作多种场景的应用,Rust的文件I/O操作提供了丰富的功能,从基本的文件读写到高级的目录操作、元数据获取、临时文件和异步I/O,通过掌握这些高级应用,我们可以编写更加高效、可靠的文件操作代码,需要的朋友可以参考下
    2026-05-05
  • Rust可迭代类型迭代器正确创建自定义可迭代类型的方法

    Rust可迭代类型迭代器正确创建自定义可迭代类型的方法

    在 Rust 中, 如果一个类型实现了 Iterator, 那么它会被同时实现 IntoIterator, 具体逻辑是返回自身, 因为自身就是迭代器,这篇文章主要介绍了Rust可迭代类型迭代器正确创建自定义可迭代类型的方法,需要的朋友可以参考下
    2023-12-12
  • 基于Rust构建一个Git提交历史可视化工具

    基于Rust构建一个Git提交历史可视化工具

    在软件开发中,版本控制系统的历史记录往往承载着项目的演进脉络,本文主要介绍了如何基于Rust构建一个Git提交历史可视化工具,感兴趣的小伙伴可以了解下
    2025-11-11
  • Rust 连接 SQLite 数据库的过程解析

    Rust 连接 SQLite 数据库的过程解析

    本文通过一个例子给大家介绍了Rust 连接 SQLite 数据库的详细过程,我使用rusqlite这个crate,对Rust 连接 SQLite 数据库相关知识感兴趣的朋友跟随小编一起看看吧
    2022-01-01
  • rust多样化错误处理(从零学习)

    rust多样化错误处理(从零学习)

    一个优秀的项目,错误处理的优雅性是至关重要的,而rust,anyhow creat是绕不过去的一个,今天我们来研究下,怎么使用它,帮助我们写出更优雅的代码,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2023-11-11
  • Rust 语言中的dyn 关键字及用途解析

    Rust 语言中的dyn 关键字及用途解析

    在Rust中,"dyn"关键字用于表示动态分发(dynamic dispatch),它通常与trait对象一起使用,以实现运行时多态, 在Rust中,多态是通过trait和impl来实现的,这篇文章主要介绍了Rust 语言中的 dyn 关键字,需要的朋友可以参考下
    2024-03-03
  • Rust之模式与模式匹配的实现

    Rust之模式与模式匹配的实现

    Rust中的模式匹配功能强大且灵活,它极大地提高了代码的表达力和可读性,本文主要介绍了Rust之模式与模式匹配,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • 使用环境变量实现Rust程序中的不区分大小写搜索方式

    使用环境变量实现Rust程序中的不区分大小写搜索方式

    本文介绍了如何在Rust中实现不区分大小写的搜索功能,并通过测试驱动开发(TDD)方法逐步实现该功能,通过修改运行函数和获取环境变量,程序可以根据环境变量控制搜索模式
    2025-02-02
  • rust udp编程方法的具体使用

    rust udp编程方法的具体使用

    Rust标准库通过std::net模块提供了UDP网络编程支持,下面就来介绍一下rust udp编程方法的具体使用,具有一定的参考价值,感兴趣的可以了解一下
    2025-06-06
  • 一文弄懂Rust之切片

    一文弄懂Rust之切片

    在Rust中,切片是一种非常重要的引用类型,它允许你安全地引用一段连续内存中的数据,而不需要拥有这些数据的所有权,本文主要介绍了Rust之切片,感兴趣的可以了解一下
    2024-03-03

最新评论