trl_codegen 1.2.1

This library provides auto generation of some common methods based on Rust macros
Documentation
//! This module preprocesses fields of specific types to get better return types of some fields

use syn::{Field, Ident};

use crate::{
    fields::option::{is_option, preprocess_option_getter},
    helpers::generate_custom_getter,
    modifier::Modifier,
};

mod field_param;
mod getter_data;
mod option;
mod should_replace;

pub use field_param::FieldParam;
pub use should_replace::ShouldReplaceGetter;

pub fn process_getter_field(
    field: &Field,
    process_option: bool,
    name: &Ident,
    modifier: &Modifier,
) -> ShouldReplaceGetter {
    let _ = name;
    if process_option {
        return process_option_getter_field(field, name, modifier);
    };

    ShouldReplaceGetter::No
}

pub fn process_option_getter_field(
    field: &Field,
    name: &Ident,
    modifier: &Modifier,
) -> ShouldReplaceGetter {
    if !is_option(&field.ty) {
        return ShouldReplaceGetter::No;
    };

    let replaced_data = preprocess_option_getter(field, modifier);

    ShouldReplaceGetter::Yes(generate_custom_getter(
        name,
        modifier,
        replaced_data.return_type,
        replaced_data.return_body,
    ))
}