В Python я могу сделать:
a = [1,2,3]
b = a[:-1] #1,2
Rust имеет синтаксис для получения фрагмента массива диапазон , где вы предоставляете последний индекс, не включительно:
let a = vec![1, 2, 3];
let b = &a[0..2]; // [1, 2]
Если я использую -1
, это вызывает ошибку компилятора:
let a = vec![1, 2, 3];
let b = &a[0..-1];
error[E0277]: the trait bound `usize: std::ops::Neg` is not satisfied
--> src/lib.rs:3:19
|
3 | let b = &a[0..-1];
| ^^ the trait `std::ops::Neg` is not implemented for `usize`
Как я могу это сделать?
пример:
я хочу преобразовать "x1 :: x2 :: x3 :: ... :: xn" в "x1 :: x2 :: x3 :: ... xn-1"
в python одна линия твердения должна быть
case_1 = "a::b::c";
ret = case1.split("::")[:-1]
, но каково это решение одной линии для ржавчины
let case_1 = "a::b::c";
let ret = case_1.split("::").collect::<Vec<_>>() //what could i do next?