如何将Serde的skip_serializing_if与空片一起使用?

时间:2019-07-16 15:09:14

标签: rust serde

一个#[serde(skip_serializing_if = "Vec::is_empty")]可以做Vec,但是切片的等效条件是什么?

1 个答案:

答案 0 :(得分:3)

切片类型[T]也具有is_empty方法。这是您的称呼方式:

use serde::Serialize;

#[derive(Serialize)]
struct S<'a> {
    #[serde(skip_serializing_if = "<[_]>::is_empty")]
    slice: &'a [String]
}

fn main() {
    let s = S { slice: &[] };
    println!("{}", serde_json::to_string(&s).unwrap());
}