gpt4 book ai didi

struct - 你能把 struct impl block 放在不同的文件中吗?

转载 作者:行者123 更新时间:2023-12-05 01:57:08 25 4
gpt4 key购买 nike

假设,出于推测的目的,您有三个文件:main.rsstruct.rsimpl.rs。你能不能在 struct.rs 中定义一个结构,在其中放置一个 impl,在 impl.rs 中放置另一个 impl ,然后使用 main.rs 中的两组 impl?如果是,怎么办?

项目结构:

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

最佳答案

是的,这是可能的。您可以在整个 crate 中为您的结构提供实现。您只是不能为来自外国 crate 的类型提供 impls。而且您不需要做任何特别的事情来完成这项工作——只需确保该结构在 main 中可见。当然,您不能将模块命名为 structimpl,因为它们是保留字。

下面是一些示例代码:

fn main() {
use struct_::A;
A::foo();
A::bar();
}

pub mod struct_ {
pub struct A;

impl A {
pub fn foo() {}
}
}

mod impl_ {
impl crate::struct_::A {
pub fn bar() {}
}
}

( Playground )

关于struct - 你能把 struct impl block 放在不同的文件中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69494716/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com