小编The*_*eks的帖子

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

出于推测目的,假设您有三个文件: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)

struct project-structure rust

7
推荐指数
1
解决办法
3000
查看次数

如何访问 dyn 结构体的字段?

最近我一直在学习高级 Rust。作为其中的一部分,我正在学习使用动态调度。

在我的修补过程中,我遇到了一些问题。由于某种原因,我似乎无法访问已使用框和动态调度分配给变量的结构字段。例如,

fn main() {
    let z: Box<dyn S>;
    z = Box::new(A::new());

    println!("{}", z.val);
}

trait S {
    fn new () -> Self where Self: Sized;
}


struct A {
    val: i32,
}

impl S for A {
    fn new () -> A {
        A {val: 1}
    }
}

struct B {
    val: i32
}

impl S for B {
    fn new() -> B {
        B {val:2}
    }
}
Run Code Online (Sandbox Code Playgroud)

产生错误消息“错误[E0609]:val类型上没有字段Box<dyn S>

有什么方法可以访问这些字段,还是我需要拼凑一个解决方法?

dynamic-dispatch rust

4
推荐指数
1
解决办法
1505
查看次数

如何序列化和反序列化 chrono::Duration?

在我当前的项目中,我尝试将 a 存储chrono::Duration在配置结构中,该结构偶尔会使用serde_json.

不幸的是,似乎SerializeDeserialize并未针对chrono::Duration. 也就是说,它通过其可选功能之一chrono提供支持。serde我尝试使用此方法,但现在编译器抱怨返回方法:

error[E0308]: mismatched types
 --> src/config.rs:6:10
  |
6 | #[derive(Serialize, Deserialize, Debug, Clone)]
  |          ^^^^^^^^^ expected struct `DateTime`, found struct `chrono::Duration`
  |
  = note: expected reference `&DateTime<Utc>`
         found reference `&'__a chrono::Duration`
  = note: this error originates in the derive macro `Serialize` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0308]: mismatched types
 --> src/config.rs:6:21
  |
6 | #[derive(Serialize, Deserialize, Debug, …
Run Code Online (Sandbox Code Playgroud)

rust rust-chrono serde

4
推荐指数
1
解决办法
6663
查看次数