主な目標は、タプル内にある所有ボックスにアクセスすることです。たとえば、(String, i32)
以下のコードの文字列です。
私の最初の意図は、let
バインディングを使用して所有ボックスから借りることでした。借用は非タプルの場合 (1) には機能しますが、タプルが関係する場合には機能しません (2)。
私の意図は間違っていますか?もしそうなら、文字列にアクセスする別の慣用的な方法はありますか?
コード例:
fn main() {
// 1. Normal borrowing
let s: String = "blub".to_string();
let sr: &str = &s; // this works
// 2. Borrowing from a tuple
let st = ("blub".to_string(), 1);
let (st_r, i): (&str, i32) = st; // error: mismatched types:
println!( "{} {} {} {}", s, sr, st_r, i);
}
コンパイラ エラーは次のとおりです。
error: mismatched types:
expected `(&str, i32)`,
found `(collections::string::String, _)`