orz 0.25.0

Derive `field_values()` to get Vec<String> of struct field values
Documentation

derive-field-values

Crates.io Docs

为结构体派生 field_values() 方法,返回所有字段值的 Vec<String>。支持跳过字段和转换。

安装

[dependencies]

derive-field-values = "0.25.0"

使用

use derive_field-values::FieldValues;

#[derive(FieldValues)]
struct Person {
    name: String,
    age: u32,
    email: String,
}

let p = Person {
    name: "Alice".to_string(),
    age: 30,
    email: "alice@example.com".to_string(),
};

assert_eq!(p.field_values(), vec!["Alice", "30", "alice@example.com"]);

跳过字段

#[derive(FieldValues)]
struct User {
    username: String,
    #[field_values(skip)]
    password: String,
}

自定义字段

#[derive(FieldValues)]
struct Log {
    level: String,
    #[field_values(transform = "to_uppercase")]
    message: String,
    #[field_values(transform = "debug")]
    metadata: Vec<i32>,
}

引用版本

#[derive(FieldValues)]
struct LogLine<'a> {
    level: &'a str,
    message: &'a str,
}

let log = LogLine { level: "INFO", message: "Hello" };
assert_eq!(log.field_values_ref(), vec!["INFO", "Hello"]);