Bir tuple tahsis etmek ve sonucun bir kısmını yeni bir değişkene atamak ve sonucun başka bir kısmını var olana atamak istiyorum.Bir sonucu/match/for deyiminde sonucu yeni bir değişkene bağlamadan bir tuple atayabilir miyim?
fn main() {
let mut list = &[0, 1, 2, 3][..];
while !list.is_empty() {
let (head, list) = list.split_at(1);
// An obvious workaround here is to introduce a new variable in the above
// let statement, and then just assign it to list.
println!("{:?}", head);
}
}
Bu kod yeniden atama yerine yeni bir değişken list
oluşturur:
Aşağıdaki kod amacı (bu [0]
baskı sonsuz bir döngü ile sonuçlanan bir aptal örnek) göstermektedir.
Ben aşağıdakilere kodunu değiştirirseniz (yeni list
değişken tanıtır let
önlemek için), bu derleme değil:
fn main() {
let mut list = &[0, 1, 2, 3][..];
while !list.is_empty() {
let head;
(head, list) = list.split_at(1);
println!("{:?}", head);
}
}
Derleme hatası:
error[E0070]: invalid left-hand side expression
--> src/main.rs:5:9
|
5 | (head, list) = list.split_at(1);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ left-hand of expression not valid
Bunu yapmanın bir yolu var mı, yoksa yalnızca let
, match
ve for
ifadelerinde kullanılabilir mi?