问我主要是出于好奇,我没有这方面的用例.

阅读Rust参考,我注意到在函数中定义任何类型的项显然是合法的.根据参考文献:

项目的路径名称...对于封闭项是私有的(在函数的情况下)

假设下面的代码,我们在函数中定义了一个类型和一个模块:

pub fn main() {
    #[derive(Debug)]
    pub struct Foo;

    mod module {
        pub fn function() {
            println!("{:?}", Foo);
        }
    }

    module::function();
}

是否可以从module模块中引用main函数中定义的Foo类型?

目前,我收到以下编译错误:

  |
7 |             println!("{:?}", Foo);
  |                              ^^^ not found in this scope

推荐答案

这是issue #79260美元.据我所知,没有办法提到function()号里面的Foo号.

Rust相关问答推荐

当为a Self:IntoIterator设置trait bind `时,获取`a T `不是迭代器"&'"<'>&'

将已知大小的切片合并成一个数组,

有没有办法指定只在Rust的测试中有效的断言?

除了调用`waker.wake()`之外,我如何才能确保future 将再次被轮询?

正则表达式中的重叠匹配?(铁 rust 正则式发动机)

Const 上下文:从 init 函数创建具有 const 通用长度的数组

为什么实现特征的对象期望比具体对象有更长的生命周期?

要求类型参数有特定的大小?

try 从标准输入获取用户名和密码并删除 \r\n

如何为已实现其他相关 std trait 的每个类型实现一个 std Trait

Rust中的标记特征是什么?

Rust 中 Mutex<> 的深拷贝?

如何在 Rust Polars 中可靠地连接 LazyFrames

如何使用 rust bindgen 生成的 std_vector

为什么基于 clap::Parser 读取的大量数字进行计算比硬编码该数字时慢?

从 Cranelift 发出 ASM

如果我立即等待,为什么 `tokio::spawn` 需要一个 `'static` 生命周期?

返回 &str 但不是 String 时,borrow 时间比预期长

为什么当borrow 变量发生变化时,borrow 变量不会改变?

为什么可以从不可变 struct 的字段中移动?