Skip to main content

Module accessors

Module accessors 

Source
Expand description

Accessors / Mutators + Attribute Casting

对应文档 6.8 节改进项 22(Accessors/Mutators)+ 23(Attribute Casting)。

§核心概念

  • Accessor:字段读取器(getter),从存储值转换为展示值
  • Mutator:字段设置器(setter),从输入值转换为存储值
  • AttributeCaster:字段类型转换器(数据库 <-> Rust 类型)
  • AccessorRegistry:Accessor/Mutator 注册中心

§设计灵感

  • Laravel Eloquent getCasts() / mutators / accessors
  • Doctrine @Column(type="...") 类型转换
  • Rails ActiveRecord serialize / attr_accessor

§使用示例

use sz_orm_model::accessors::{
    AccessorRegistry, AttributeCaster, CastType,
};
use sz_orm_model::Value;

let mut registry = AccessorRegistry::new();

// 注册 is_admin 字段:数据库存 SMALLINT,读出时转为 bool
registry.register_cast("is_admin", CastType::Boolean);

// 注册 settings 字段:数据库存 TEXT,读出时解析为 JSON
registry.register_cast("settings", CastType::Json);

// 应用 casting(从数据库读出)
let stored = Value::I64(1);
let casted = registry.cast_read("is_admin", stored);
assert_eq!(casted, Value::Bool(true));

Structs§

AccessorRegistry
Accessor / Mutator / Cast 注册中心
AttributeCaster
类型转换器
ClosureAccessor
闭包风格 Accessor
ClosureMutator
闭包风格 Mutator

Enums§

CastType
字段类型转换枚举

Traits§

Accessor
自定义字段读取器(Accessor / Getter)
Mutator
自定义字段设置器(Mutator / Setter)