Als «rust» getaggte Fragen

Rust ist eine Systemprogrammiersprache ohne Garbage Collector, die sich auf drei Ziele konzentriert: Sicherheit, Geschwindigkeit und Parallelität. Verwenden Sie dieses Tag für Fragen zu in Rust geschriebenem Code. Verwenden Sie ein editionsspezifisches Tag für Fragen, die sich auf Code beziehen, für den eine bestimmte Edition erforderlich ist, z. B. [rust-2018]. Verwenden Sie spezifischere Tags für Unterthemen wie [Rostfracht] und [Rostmakros].


1
Sollte Diesel mit einem Synchronisator, actix_web :: web :: block oder futures-cpupool betrieben werden?
Hintergrund Ich arbeite an einer Actix-Webanwendung mit Diesel über r2d2 und bin mir nicht sicher, wie ich am besten asynchrone Abfragen durchführen kann. Ich habe drei Optionen gefunden, die vernünftig erscheinen, bin mir aber nicht sicher, welche die beste ist. Potentielle Lösungen Schauspieler synchronisieren Zum einen könnte ich das Actix-Beispiel …

1
Wie aktivieren Sie eine Rust-Kistenfunktion?
Ich versuche zu benutzen rand::SmallRng. Die Dokumentation sagt Dieses PRNG ist funktionsgesteuert : Um es zu verwenden, müssen Sie die Kistenfunktion aktivieren small_rng. Ich habe gesucht und kann nicht herausfinden, wie "Kistenfunktionen" aktiviert werden. Der Ausdruck wird nirgendwo in den Rust-Dokumenten verwendet. Dies ist das Beste, was ich mir vorstellen …


1
Überträgt std :: ptr :: write die „Uninitialisierung“ der geschriebenen Bytes?
Ich arbeite an einer Bibliothek, mit deren Hilfe Typen abgewickelt werden können, die über FFI-Grenzen in eine Zeigergröße passen. Angenommen, ich habe eine Struktur wie diese: use std::mem::{size_of, align_of}; struct PaddingDemo { data: u8, force_pad: [usize; 0] } assert_eq!(size_of::<PaddingDemo>(), size_of::<usize>()); assert_eq!(align_of::<PaddingDemo>(), align_of::<usize>()); Diese Struktur hat 1 Datenbyte und 7 Füllbytes. …


1
Was ist ein besserer Weg, um mit Schließungen in WebAssembly mit Rust umzugehen, anstatt zu vergessen und Speicher zu verlieren?
Wie kann man beim Bereitstellen von Rückrufen für JavaScript mithilfe von Closures besser damit umgehen, dass sie nicht freigegeben werden? Der wasm-bindgen-Leitfaden schlägt die Verwendung vor .forget, gibt jedoch zu, dass dies im Wesentlichen zu einem Speicherverlust führt. Normalerweise speichern wir das Handle, damit es später zu einem geeigneten Zeitpunkt …

2
Wie kann ich hygienische Kennungen in Code erstellen, der durch prozedurale Makros generiert wird?
Beim Schreiben eines deklarativen ( macro_rules!) Makros erhalten wir automatisch eine Makrohygiene . In diesem Beispiel deklariere ich eine fim Makro benannte Variable und übergebe einen Bezeichner, fder zu einer lokalen Variablen wird: macro_rules! decl_example { ($tname:ident, $mname:ident, ($($fstr:tt),*)) => { impl std::fmt::Display for $tname { fn fmt(&self, f: &mut …

2
Wann ist die Schwanzrekursion in Rust garantiert?
C Sprache In der Programmiersprache C ist es einfach, eine Schwanzrekursion durchzuführen : int foo(...) { return foo(...); } Geben Sie einfach den Rückgabewert des rekursiven Aufrufs zurück. Es ist besonders wichtig, wenn sich diese Rekursion tausend- oder sogar millionenfach wiederholen kann. Es würde viel Speicher auf dem Stapel verbrauchen …

2
Warum implementiert Vec das Iterator-Merkmal nicht?
Was ist der Entwurfsgrund dafür, dass Vecdas IteratorMerkmal nicht implementiert wird? Wenn immer iter()alle Vektoren und Slices aufgerufen werden müssen, entstehen längere Codezeilen. Beispiel: let rx = xs.iter().zip(ys.iter()); im Vergleich zu Scala: val rx = xs.zip(ys)
8 rust 

2
Wie kann sichergestellt werden, dass jede Enum-Variante zur Kompilierungszeit von einer bestimmten Funktion zurückgegeben werden kann?
Ich habe eine Aufzählung: enum Operation { Add, Subtract, } impl Operation { fn from(s: &str) -> Result<Self, &str> { match s { "+" => Ok(Self::Add), "-" => Ok(Self::Subtract), _ => Err("Invalid operation"), } } } Ich möchte beim Kompilieren sicherstellen, dass jede Enum-Variante in der fromFunktion behandelt wird. Warum …
8 enums  rust 

1
Warum läuft Vec :: keep nach dem Update auf Rust 1.38.0 langsamer?
Nachdem ich Rust von 1.36.0 auf Version 1.38.0 aktualisiert hatte, stellte ich fest, dass mein Programm langsamer läuft - um etwa 50%. Mit habe perfich festgestellt, dass die Hälfte der Programmzeit alloc::vec::Vec<T>::retainin der neuen Version verbracht wird. In der älteren Version wird diese Funktion nicht einmal angezeigt. Warum retainsollte 1.38.0 …

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.