Display
エンドユーザーにとっての読みやすさを優先する、「文字列へ書き込む」トレイト。
derive 可能: ❌(derive_more のようなクレートを使わない場合)
// Copyright 2025 Google LLC // SPDX-License-Identifier: Apache-2.0 #[derive(Debug)] pub enum NetworkError { HttpCode(u16), WhaleBitTheUnderseaCable, } impl std::fmt::Display for NetworkError { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { NetworkError::HttpCode(code) => write!(f, "HTTP Error code {code}"), NetworkError::WhaleBitTheUnderseaCable => { write!(f, "Whale attack detected – call Ishmael") } } } } fn main() { let http = NetworkError::HttpCode(404); let whale = NetworkError::WhaleBitTheUnderseaCable; println!("http debug: {:?}", http); println!("http display: {}", http); println!("whale debug: {:?}", whale); println!("whale display: {}", whale); }
-
Debugに似たトレイトですが、エンドユーザーにとっての読みやすさに重点があります。 -
Errorトレイトの前提条件です。エラー型に実装する場合は、自分以外のユーザーやプログラマーに とって説明的なエラーを提供することに重点を置いてください。 -
Debug と同じセキュリティ上の考慮事項があります。機密データが UI やログで どのように露出しうるかを検討してください。
-
Displayを実装する型には、自動的にToStringも実装されます。 -
例のエラー型について、
DebugとDisplayの振る舞いを比較してください。Debugの impl はコード上で現れるデータをより直接的に表す一方、Displayは 非プログラマーにより親しみやすいメッセージを提供することを示してください。