🚀 feat: BoxBase+BoxCore革命 Phase2完了 - 統一アーキテクチャ基盤実装
✅ BoxBase構造体とBoxCoreトレイト実装完了 - BoxBase: 全Box型共通の基盤構造体(統一ID管理) - BoxCore: box_id()とfmt_box()の統一インターフェース - NyashBox: BoxCoreを継承、type_name()デフォルト実装追加 ✅ 主要Box型の統一アーキテクチャ移行完了 - StringBox, IntegerBox, BoolBox, VoidBox, NullBox - FileBox, ErrorBox, ResultBox - unsafe ID生成 → BoxBase::new()安全化 - Display実装 → fmt_box()統一化 🎯 CharmFlow教訓活用:互換性破綻回避の統一基盤完成 🔧 Phase3: 残りBox型の統一化作業継続中 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@ -84,25 +84,21 @@
|
||||
* - メソッド呼び出し時のnullチェックでNullPointerException防止
|
||||
*/
|
||||
|
||||
use crate::box_trait::{NyashBox, StringBox, BoolBox};
|
||||
use crate::box_trait::{NyashBox, StringBox, BoolBox, BoxCore, BoxBase, next_box_id};
|
||||
use std::fmt::{Debug, Display};
|
||||
use std::any::Any;
|
||||
|
||||
/// null値を表現するBox
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct NullBox {
|
||||
id: u64,
|
||||
base: BoxBase,
|
||||
}
|
||||
|
||||
impl NullBox {
|
||||
pub fn new() -> Self {
|
||||
static mut COUNTER: u64 = 0;
|
||||
let id = unsafe {
|
||||
COUNTER += 1;
|
||||
COUNTER
|
||||
};
|
||||
|
||||
Self { id }
|
||||
Self {
|
||||
base: BoxBase::new()
|
||||
}
|
||||
}
|
||||
|
||||
/// null値かどうかを判定
|
||||
@ -138,6 +134,16 @@ impl NullBox {
|
||||
}
|
||||
}
|
||||
|
||||
impl BoxCore for NullBox {
|
||||
fn box_id(&self) -> u64 {
|
||||
self.base.id
|
||||
}
|
||||
|
||||
fn fmt_box(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
|
||||
write!(f, "null")
|
||||
}
|
||||
}
|
||||
|
||||
impl NyashBox for NullBox {
|
||||
fn type_name(&self) -> &'static str {
|
||||
"NullBox"
|
||||
@ -159,15 +165,11 @@ impl NyashBox for NullBox {
|
||||
fn as_any(&self) -> &dyn Any {
|
||||
self
|
||||
}
|
||||
|
||||
fn box_id(&self) -> u64 {
|
||||
self.id
|
||||
}
|
||||
}
|
||||
|
||||
impl Display for NullBox {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
write!(f, "null")
|
||||
self.fmt_box(f)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user