2016-06-12 3 views
1

私は与えられた引数に応じて文字列を返そうとしています。RustのリテラルからフォーマットされたStringを作成する方法は?

fn hello_world(name:Option<String>) -> String { 
    if Some(name) { 
     return String::formatted("Hello, World {}", name); 
    } 
} 

これは関連する機能ではありません。 - 私は何をしたいかを明確にしたかったのです。私はすでにドキュメントを閲覧しましたが、文字列ビルダーの機能などは見つかりませんでした。

答えて

4

使用format! macroは:フォーマット引数が手続きマクロを介して実装され、コンパイル時、に型検査されているため、さびで

fn hello_world(name: Option<&str>) -> String { 
    match name { 
     Some(n) => format!("Hello, World {}", n), 
     None => format!("Who are you?"), 
    } 
} 

、文字列をフォーマットするマクロシステムを使用します。

あなたのコードを持つ他の問題があります。

  1. あなたはNoneのために何をするかを指定しないでください - あなただけの値を返すために、「失敗」することはできません。
  2. ifの構文が正しくないため、if letとパターンマッチします。
  3. 文法上、暗黙のリターンをブロックの最後に使用するとします。
  4. 多くの場合、(ただしすべてではありません)のケースでは、Stringの代わりに&strを受け入れる必要があります。
関連する問題