小编llx*_*xbb的帖子

序列化空值或默认值时如何避免生成 JSON?

serde_json::to_string()函数将生成一个字符串,其中可能包含nullfor anOption<T>0for a u32。这使得输出更大,所以我想忽略这些类型的值。

我想简化以下结构的 JSON 字符串输出:

use serde_derive::Serialize; // 1.0.82

#[derive(Serialize)]
pub struct WeightWithOptionGroup {
    pub group: Option<String>,
    pub proportion: u32,
}
Run Code Online (Sandbox Code Playgroud)

groupNone并且proportion是 0 时,JSON 字符串应该是"{}"

感谢您的回答如何更改 Serde 的默认实现以返回空对象而不是 null?,它可以解决Option问题,但0没有解决方案。

rust serde-json

6
推荐指数
1
解决办法
4392
查看次数

无法将“&amp;Thing”与“Thing”进行比较

我知道该错误意味着什么,但我无法修复它。我正在用来mockers测试我的工作,在尝试验证提供给模拟特征函数的结构参数时,我陷入了困境。简化的代码:

#[cfg(test)]
extern crate mockers;
#[cfg(test)]
extern crate mockers_derive;

#[cfg(test)]
use mockers_derive::mocked;

#[derive(Ord, PartialOrd, Eq, PartialEq, Debug)]
pub struct Thing {
    pub key: String,
    pub class: String,
}

#[cfg_attr(test, mocked)]
pub trait DaoTrait {
    fn get(&self, thing: &Thing) -> String;
}

struct DataService {
    dao: Box<DaoTrait>,
}

impl DataService {
    pub fn get(&self, thing: &Thing) -> String {
        self.dao.get(thing)
    }
}

#[cfg(test)]
mod test {
    use super::*;
    use mockers::matchers::eq;
    use mockers::Scenario;

    #[test]
    fn my_test() {
        use mockers::matchers::check;
        let …
Run Code Online (Sandbox Code Playgroud)

mocking rust

5
推荐指数
1
解决办法
3836
查看次数

我想在`main()`之外的模块中启动Rocket但是失败了

我想在一个模块中启动 Rocket main(),这样可以简化,main()但我失败了。我从火箭修改了Quicktart

编码:

mod myRocket {
    #![feature(plugin)]
    #![plugin(rocket_codegen)]
    extern crate rocket;

    #[get("/")]
    fn index() -> &'static str {
        "Hello, world!"
    }

    pub fn startup() {
        rocket::ignite().mount("/", routes![index]).launch();
    }
}


fn main() {
    myRocket::startup();
}
Run Code Online (Sandbox Code Playgroud)

错误:

error: cannot find macro `routes!` in this scope
--> src\main.rs:12:37
|
12 |         rocket::ignite().mount("/", routes![index]).launch();
|
Run Code Online (Sandbox Code Playgroud)

我不知道如何修复它。

rust rust-rocket

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

对Sync的性能影响感到困惑

Sync使用同步和发送特征读取可扩展并发后,我对标记特征有疑问.

Java的"同步"意味着阻塞,所以我对如何Sync实现在多个线程上执行其方法的Rust结构会有效感到困惑.

我搜索但没有找到有意义的答案.我这样思考:每个线程都会同步获取struct的引用(阻塞),但是并行调用该方法,是真的吗?

performance synchronization rust

3
推荐指数
1
解决办法
88
查看次数