Expand description
Debug - Tick単位のデバッグ出力機構
Eval/Test実行時のデバッグ用。Tick単位でStateをDumpする。
§設計思想
- Tick-based: Spanログではなく、Tick単位のスナップショット
- 自動収集:
Dumpable実装 +register()で完了 - Subscribe: broadcast channelで外部からSubscribe可能
- 条件付き: -v / RUST_LOG=debug / Error時のみ有効
§使い方
ⓘ
use swarm_engine_core::debug::{TickDumper, Dumpable};
// Dumpable を実装
impl Dumpable for MyState {
fn name(&self) -> &'static str { "my_state" }
fn snapshot(&self, tick: u64) -> Option<serde_json::Value> {
Some(serde_json::json!({ "count": self.count }))
}
}
// TickDumper に登録
let mut dumper = TickDumper::new(256);
dumper.register(Arc::new(my_state));
dumper.enable();
// Subscribe
let mut rx = dumper.subscribe();
tokio::spawn(async move {
while let Ok(snap) = rx.recv().await {
eprintln!("{:?}", snap);
}
});
// Tick終了時
dumper.dump(tick);Structs§
- Debug
Snapshot - Tick単位のスナップショット
- Stderr
Dump Subscriber - stderr出力用Subscriber
- Tick
Dumper - Tick Dumper - Dumpable の Registry + 配信
Traits§
- Dumpable
- Tick単位でDump可能なもの