ReadableKeypaths

Derive Macro ReadableKeypaths 

Source
#[derive(ReadableKeypaths)]
Expand description

Derives only readable keypath methods for struct fields.

This macro is a convenience wrapper that generates only readable keypaths, equivalent to using #[derive(Keypaths)] with #[Readable] on the struct.

§Generated Methods

For each field field_name, generates:

  • field_name_r() - Returns a KeyPath<Struct, FieldType> for non-optional fields
  • field_name_fr() - Returns an OptionalKeyPath<Struct, InnerType> for optional/container fields
  • field_name_fr_at(index) - Returns an OptionalKeyPath for indexed access

§Examples

use keypaths_proc::ReadableKeypaths;

#[derive(ReadableKeypaths)]
struct User {
    name: String,
    email: Option<String>,
    tags: Vec<String>,
}

// Usage:
let user = User {
    name: "Alice".to_string(),
    email: Some("alice@example.com".to_string()),
    tags: vec!["admin".to_string()],
};

let name_path = User::name_r();
let email_path = User::email_fr();
let name = name_path.get(&user);  // &String
let email = email_path.get(&user);  // Option<&String>