"あなた"または "私"の回答を期待している質問をユーザーに聞く簡単な関数をRustに書き込もうとしています。ブール値を返すか、ユーザーが間違って答えた場合には再度質問する必要があります。期待される文字列、オプションの文字列と一致するときに&strが見つかりました
fn player_starts() -> bool {
println!("Who will start (me/you)");
loop {
let input = readline::readline(">");
match input {
Some("me") => return true,
Some("you") => return false,
_ => None,
}
}
}
私は何を取得することです:
error: mismatched types:
expected `collections::string::String`,
found `&'static str`
(expected struct `collections::string::String`,
found &-ptr) [E0308]
はここで働くためにリテラルを強制するためにいくつかの方法はありますか私の目標を達成するためにいくつかのより良い方法があります私が思い付きましたか?
to_string()ではなく、to_owned()や 'into()'(ターゲットタイプがわかっている場合)を使用する方が慣れています。後者は、いくつかのオーバーヘッドを導入するフォーマットコードを呼び出す 'Display'特性によって動作します。ラストがインプルメントのスペシャライゼーションを取得した場合、これは修正される可能性がありますが、まだそこにはありません。 –
@VladimirMatveevありがとう、まだRustにはかなり新しいので、私は最小限の経験に基づいてそのような主張をするべきではないと思う。 – TartanLlama
上記に起因するdownvoteですか?またはこのソリューションには他の問題がありますか? – TartanLlama