Drawトレイト
CoddyのRustジャーニー「Object Oriented Programming」セクションの一部 — レッスン 49/61。
チャレンジ
簡単ドキュメントシステムを構築しましょう!このプロジェクトでは、トレイトオブジェクトを使用してUIコンポーネントをレンダリングするための柔軟なフレームワークを作成します。まずは、独自のモジュールファイルで Draw トレイトを定義することから始めます。
コードを整理するために、2つのファイルを作成します:
draw.rs:&selfを受け取り出力を表示するdrawという単一のメソッドを持つ、パブリックなDrawトレイトを定義します。このトレイトは、すべてのUIコンポーネントが満たすべき契約として機能します。main.rs:drawモジュールを取り込み、パブリックなtextフィールド(String型)を持つLabelというシンプルな構造体を作成します。Labelに対してDrawトレイトを実装し、draw()を呼び出すとラベルのテキストが表示されるようにします。
メイン関数内で、Label インスタンスを作成し、その draw() メソッドを呼び出してテキストを表示してください。
以下の入力が提供されます:
- ラベルのテキストを表す文字列
出力は、ラベルのテキストを正確に1行で表示する必要があります。
自分で試してみよう
mod draw;
use draw::Draw;
// TODO: textというパブリックなフィールド(String型)を持つ、Labelというパブリックな構造体を定義してください
// TODO: LabelにDrawトレイトを実装してください
// drawメソッドはラベルのテキストを表示するようにしてください
fn main() {
let mut input = String::new();
std::io::stdin().read_line(&mut input).expect("Failed to read line");
let text = input.trim().to_string();
// TODO: 入力されたテキストを使用してLabelのインスタンスを作成してください
// TODO: ラベルのdraw()メソッドを呼び出してください
}