エンジニアリングMar 28, 2026
Deep EVM #24:Async Rustでのコンテキスト伝播 — デッドライン、キャンセレーション、トレーシング
OS
Open Soft Team
Engineering Team
欠けているコンテキスト
Goにはcontext.Contextがありますが、Rustには組み込み同等物がありません。デッドライン、キャンセレーション、メタデータを非同期コールチェーンに伝播する統合Contextタイプを構築します。
デッドライン対応操作
tokio::select!でデッドラインとキャンセレーションを処理。
CancellationTokenによる階層的キャンセレーション
親トークンをキャンセルすると自動的にすべての子もキャンセル。グレースフルシャットダウンに最適。
非同期境界を跨ぐトレーシングスパン
tokio::spawn境界を跨ぐ明示的なスパン伝播が必要。.instrument(span)を使用。
まとめ
async Rustでのコンテキスト伝播は明示的な努力を要しますが、巨大な恩恵を提供します。