Jaka jest obecnie zalecana metoda sortowania wartości w wektorze?
Jaka jest obecnie zalecana metoda sortowania wartości w wektorze?
W Rust referencje nigdy nie mogą być zerowe, więc w przypadku, gdy faktycznie potrzebujesz null, na przykład listy połączonej, użyj Optiontypu: struct Element { value: i32, next: Option<Box<Element>>, } Ile narzutu wiąże się z tym, jeśli chodzi o alokację pamięci i kroki do...
Bardzo często otrzymałem Option<String>z obliczeń i chciałbym użyć tej wartości lub domyślnej wartości zakodowanej na stałe. Byłoby to trywialne w przypadku liczby całkowitej: let opt: Option<i32> = Some(3); let value = opt.unwrap_or(0); // 0 being the default Ale z a Stringi a...
Chciałbym zacząć wielką literę od a &str. To prosty problem i mam nadzieję na proste rozwiązanie. Intuicja każe mi zrobić coś takiego: let mut s = "foobar"; s[0] = s[0].to_uppercase(); Ale &strnie można go indeksować w ten sposób. Jedyny sposób, w jaki byłem w stanie to zrobić, wydaje...
Gdzieś wybrałem termin „typ podstawowy” (i jego atrybut #[fundamental]) i właśnie teraz chciałem dowiedzieć się o nim więcej. Niejasno pamiętam, że chodziło o rozluźnienie zasad koherencji w niektórych sytuacjach. I myślę, że typy referencyjne są takimi podstawowymi typami. Niestety wyszukiwanie w...
Powiedz, że mam następujący fragment kodu ( plac zabaw ) struct A { pub val: u32 } const GLOBAL_A: A = A {val: 2}; fn main() { let some_a: A = GLOBAL_A; let other_a: A = GLOBAL_A; println!("double val = {}", some_a.val + other_a.val); } Ponieważ Aani Clonenie jest Copy, ani nie założyłbym...
Co oznacza błąd w tym przypadku: fn main() { let mut v: Vec<usize> = vec![1, 2, 3, 4, 5]; v[v[1]] = 999; } error[E0502]: cannot borrow `v` as immutable because it is also borrowed as mutable --> src/main.rs:3:7 | 3 | v[v[1]] = 999; | --^---- | | | | | immutable borrow occurs...
Realizacja std::mem::dropjest udokumentowana następująco: pub fn drop<T>(_x: T) { } Jako taki, oczekiwałbym, że zamknięcie |_| ()(potocznie zwane zamknięciem toalety ) będzie potencjalnym zamiennikiem 1: 1 dropw obu kierunkach. Jednak poniższy kod pokazuje, że dropnie jest zgodny z cechą...
Po uwzględnieniu informacji o debugowaniu mój plik binarny ma rozmiar około 400 MB. Dzieje się tak, ponieważ Rust zawiera informacje debugowania dla wszystkich zależności. Czy jest jakiś sposób na włączenie informacji debugowania tylko dla mojego kodu? [package] name = "app" version =...
Nie mogę obsłużyć funkcji asynchronicznych podczas pisania routera asynchronicznego hyper. Ten kod: use std::collections::HashMap; use std::future::Future; type BoxedResult<T> = Result<T, Box<dyn std::error::Error + Send + Sync>>; type CalcFn = Box<dyn Fn(i32, i32) -> dyn...
Mam cechę, która ma funkcję deserializacji powiązanego typu. Jednak ten typ skojarzony musi mieć okres istnienia, który decyduje osoba dzwoniąca, więc mam osobną cechę, dla której używam cechy wyższego rzędu, aby można ją było zdezrializować na dowolny okres. Muszę użyć zamknięcia, które zwraca...
tło Pracuję nad aplikacją webową actix używającą oleju napędowego przez R2D2 i nie jestem pewien, jak najlepiej wykonać zapytania asynchroniczne. Znalazłem trzy opcje, które wydają się rozsądne, ale nie jestem pewien, która z nich jest najlepsza. Potencjalne rozwiązania Synchronizuj aktora Na...
Natknąłem się na ten problem, próbując dodać impl Add<char> for Stringdo standardowej biblioteki. Ale możemy to łatwo powielić, bez operatora shenanigans. Zaczynamy od tego: trait MyAdd<Rhs> { fn add(self, rhs: Rhs) -> Self; } impl MyAdd<&str> for String { fn add(mut...
async fnzwraca anonimowy typ, który implementuje Future, więc jeśli chcemy użyć go jako wywołania zwrotnego, musimy przekonwertować wartość zwracaną na obiekt cechy. Próbowałem napisać funkcję, aby to zrobić, ale miałem pewne problemy życiowe. async fnzwróci czas życia wszystkich parametrów, więc...
Rozważmy następujące przykłady: main.rs use futures::executor::block_on; use futures::future::{FutureExt, TryFutureExt}; async fn fut1() -> Result<String, u32> { Ok("ok".to_string()) } fn main() { println!("Hello, world!"); match block_on(fut1().and_then(|x| async move {...
Zmienna i funkcja mają tę samą nazwę. Jak wywołać funkcję? fn main() { let a = 1; fn a() -> i32 { 2 } println!("{}", a()); } Kompilator Rust powiedział mi: error[E0618]: expected function, found `{integer}` Innymi słowy, kompilator Rust nie wywołuje afunkcji, ale zamiast tego uzyskuje...
Próbuję użyć rand::SmallRng. Dokumentacja mówi Ten PRNG ma bramę funkcji : aby go użyć, musisz włączyć funkcję skrzynki small_rng. Szukałem i nie mogę dowiedzieć się, jak włączyć „funkcje skrzynek”. Fraza ta nie jest nigdzie używana w dokumentach Rust. To najlepsze, co mogłem...
Śledzę błąd w kodzie strony trzeciej i zawęziłem go do czegoś podobnego do. use libc::c_void; pub unsafe fn foo() {} fn main() { let ptr = &foo as *const _ as *const c_void; println!("{:x}", ptr as usize); } Działa na stabilnej wersji 1.38.0, wypisuje wskaźnik funkcji, ale beta...