| Crates.io | field_names_and_counts |
| lib.rs | field_names_and_counts |
| version | 0.1.0 |
| created_at | 2026-01-16 01:58:47.518821+00 |
| updated_at | 2026-01-16 01:58:47.518821+00 |
| description | Traits for accessing field names and counts at compile time. |
| homepage | |
| repository | |
| max_upload_size | |
| id | 2047611 |
| size | 19,796 |
Derive macros and traits for getting field/variant names and counts at compile time.
use field_names_and_counts::{FieldNames, FieldNamesAndCount};
#[derive(FieldNames)]
struct Person {
name: String,
age: u32,
}
assert_eq!(Person::field_names(), &["name", "age"]);
assert_eq!(Person::field_count(), 2);
use field_names_and_counts::{VariantNames, VariantNamesAndCount};
#[derive(VariantNames)]
enum Message {
Ping,
Data(String),
}
assert_eq!(Message::variant_names(), &["Ping", "Data"]);
assert_eq!(Message::variant_count(), 2);
cargo add field_names_and_counts
#[field_names(skip)] skips a struct field from the generated list.#[variant_names(skip)] skips an enum variant from the generated list.use field_names_and_counts::{FieldNames, FieldNamesAndCount};
#[derive(FieldNames)]
struct Config {
name: String,
#[field_names(skip)]
secret: String,
enabled: bool,
}
assert_eq!(Config::field_names(), &["name", "enabled"]);
assert_eq!(Config::field_count(), 2);
use field_names_and_counts::{VariantNames, VariantNamesAndCount};
#[derive(VariantNames)]
enum Event {
Started,
#[variant_names(skip)]
Internal(String),
Finished,
}
assert_eq!(Event::variant_names(), &["Started", "Finished"]);
assert_eq!(Event::variant_count(), 2);