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

Ste*_*ose 7 rust serde

s可以做#[serde(skip_serializing_if = "Vec::is_empty")]Vec但是切片的等价物是什么?

dto*_*nay 9

切片类型也[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());
}
Run Code Online (Sandbox Code Playgroud)