Rdza ma FromStr
, jednak z tego co widzę, przyjmuje tylko tekst Unicode. Czy istnieje odpowiednik tego dla macierzy [u8]
?Czy Rust zapewnia sposób analizowania liczb całkowitych bezpośrednio z danych ASCII w tablicach bajtowych (u8)?
Przez "parsowanie" rozumiem, że przyjmuję znaki ASCII i zwracam liczbę całkowitą, np. C's atoi
.
Albo muszę albo ...
- Konwersja tablicy
u8
do łańcucha, potem zadzwonićFromStr
. - Zadzwoń pod numer
atoi
biblioteki libc. - Napisz
atoi
w Rust.
W prawie wszystkich przypadkach, pierwsza opcja jest uzasadnione, jednak istnieją przypadki, w których pliki może być bardzo duża, bez określonej kodowania ... albo zawierają mieszane binarne i tekstowe, gdzie jej najbardziej proste do odczytania liczb całkowitych jako bajty.
Jeśli mają mieszane binarny i tekstowy w formacie niestandardowym, być może należy przeanalizować cały plik * * Korzystanie parser takich jak [nom] (https://github.com/Geal/nom). – kennytm
Co to ma znaczenie, jeśli plik jest duży? Po prostu konwertuj, aby utworzyć wycinek, który znasz, zawierający liczbę: 'i32 :: from_str (str :: from_utf8 (& data [a..b]). Unwrap()). Unwrap()'. IIRC, czyli zero-kopia. – rodrigo
Plik jest duży to tylko uwaga, że może zawierać GB danych, więc bardziej optymalna metoda, która nie korzysta z dodatkowej konwersji i przechowywania pośredniego, może być preferowana w niektórych przypadkach, nawet z 'from_utf8', spodziewam się, że kod ścieżka sprawdza wiele znaków wielobajtowych? jeśli wiemy, że dane są tablicą cyfr, nie ma problemu z napisaniem 'atoi', co prawda nie jest to typowy przypadek użycia. – ideasman42