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§
- Accessor
Registry - Accessor / Mutator / Cast 注册中心
- Attribute
Caster - 类型转换器
- Closure
Accessor - 闭包风格 Accessor
- Closure
Mutator - 闭包风格 Mutator
Enums§
- Cast
Type - 字段类型转换枚举