Pytania otagowane jako rust

Rust to język programowania systemów bez garbage collectora, który koncentruje się na trzech celach: bezpieczeństwie, szybkości i współbieżności. Użyj tego tagu w przypadku pytań dotyczących kodu napisanego w Rust. W przypadku pytań odnoszących się do kodu wymagającego określonej edycji, np. [Rust-2018], użyj tagu specyficznego dla wydania. Użyj bardziej szczegółowych tagów dla tematów podrzędnych, takich jak [ładunek rdzy] i [makra rdzy].

1
Jaki jest narzut typu Option Rusta?
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 wyłuskiwania w porównaniu do prostego wskaźnika? Czy …

5
Konwersja z Option <String> do Option <& str>
Bardzo często otrzymałem Option&lt;String&gt;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&lt;i32&gt; = Some(3); let value = opt.unwrap_or(0); // 0 being the default Ale z a Stringi a &amp;strkompilator narzeka na niezgodne typy: let opt: Option&lt;String&gt; …
85 rust 


1
Co to jest „podstawowy typ” w Rust?
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 Internecie nie doprowadziło mnie zbyt daleko. Odniesienie do Rust …
37 rust 



2
Dlaczego `std :: mem :: drop` nie jest dokładnie taki sam jak zamknięcie | _ | () w wyższych zakresach cech?
Realizacja std::mem::dropjest udokumentowana następująco: pub fn drop&lt;T&gt;(_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ą wyższego rzędu związaną z parametrem funkcji, podczas gdy zamknięcie toalety jest. …


1
Jak mogę umieścić funkcję asynchroniczną na mapie w Rust?
Nie mogę obsłużyć funkcji asynchronicznych podczas pisania routera asynchronicznego hyper. Ten kod: use std::collections::HashMap; use std::future::Future; type BoxedResult&lt;T&gt; = Result&lt;T, Box&lt;dyn std::error::Error + Send + Sync&gt;&gt;; type CalcFn = Box&lt;dyn Fn(i32, i32) -&gt; dyn Future&lt;Output = BoxedResult&lt;i32&gt;&gt;&gt;; async fn add(a: i32, b: i32) -&gt; BoxedResult&lt;i32&gt; { Ok(a + b) } …
11 rust  async-await 

1
Czy mogę podać informacje debugowania tylko dla mojego kodu bez pakietów?
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 = "0.7.1" edition = "2018" [dependencies] actix = "*" …
11 rust  rust-cargo 

1
Jak wywołać funkcję, gdy zmienna i funkcja mają tę samą nazwę?
Zmienna i funkcja mają tę samą nazwę. Jak wywołać funkcję? fn main() { let a = 1; fn a() -&gt; 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 dostęp do azmiennej.
10 rust 

1
Jaka jest różnica między `| _ | async move {} `i` async move | _ | {} `
Rozważmy następujące przykłady: main.rs use futures::executor::block_on; use futures::future::{FutureExt, TryFutureExt}; async fn fut1() -&gt; Result&lt;String, u32&gt; { Ok("ok".to_string()) } fn main() { println!("Hello, world!"); match block_on(fut1().and_then(|x| async move { Ok(format!("{} is \"ok\"", x)) })) { Ok(s) =&gt; println!("{}", s), Err(u) =&gt; println!("{}", u) }; } Cargo.toml [dependencies] futures = "^0.3" Pytam …
10 rust 

1
Jak korzystać z async fn Rust, który przyjmuje odwołanie jako wywołanie zwrotne?
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 podpis wywołania zwrotnego również musi. Jak mogę dodać czas życia …
10 rust  async-await 

1
Dlaczego dodanie drugiego implu zapobiega derefowemu przymusowi argumentu?
Natknąłem się na ten problem, próbując dodać impl Add&lt;char&gt; for Stringdo standardowej biblioteki. Ale możemy to łatwo powielić, bez operatora shenanigans. Zaczynamy od tego: trait MyAdd&lt;Rhs&gt; { fn add(self, rhs: Rhs) -&gt; Self; } impl MyAdd&lt;&amp;str&gt; for String { fn add(mut self, rhs: &amp;str) -&gt; Self { self.push_str(rhs); self } …

1
Czy diesel powinien być uruchamiany przy użyciu aktora synchronizacji, actix_web :: web :: block czy futures-cpupool?
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 przykład mógłbym skorzystać z przykładu actix , ale jest …

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.