您可以将 struct impl 块放在不同的文件中吗?

The*_*eks 7 struct project-structure rust

出于推测目的,假设您有三个文件:main.rsstruct.rsimpl.rs。您可以在 中定义一个结构体struct.rs,将一个结构体放在impl那里,再将另一个结构体放入implimpl.rs,然后使用 中的两组implsmain.rs吗?如果是这样,怎么办?

项目结构:

main.rs:
    use struct;
    use impl;

    main() {
        let foobar = struct::Struct::new(); // defined in struct.rs
        foobar.x();  // defined in impl.rs
    }

struct.rs:
    Define Struct, first impl

impl.rs:
    Second impl
Run Code Online (Sandbox Code Playgroud)

Sve*_*ach 9

是的,这是可能的。您可以在整个箱子中为您的结构提供实现。您只是无法为外部板条箱中的类型提供实现。并且您不需要做任何特殊的事情来使这项工作 \xe2\x80\x93 只需确保该结构在main. 当然,您不能命名您的模块structimpl,因为这些是保留字。

\n

这是一些示例代码:

\n
fn main() {\n    use struct_::A;\n    A::foo();\n    A::bar();\n}\n\npub mod struct_ {\n    pub struct A;\n\n    impl A {\n        pub fn foo() {}\n    }\n}\n\nmod impl_ {\n    impl crate::struct_::A {\n        pub fn bar() {}\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

游乐场

\n