Articles of rust

Come convertire una stringa in un & str statico

Come posso convertire una String in una &str ? Più specificamente, mi piacerebbe convertirlo in una str con la durata static ( &’static str ).

Come disabilitare gli avvisi di codice inutilizzati in Rust?

struct SemanticDirection; fn main() {} warning: struct is never used: `SemanticDirection` –> src/main.rs:1:1 | 1 | struct SemanticDirection; | ^^^^^^^^^^^^^^^^^^^^^^^^^ | = note: #[warn(dead_code)] on by default Riaccendo questi avvertimenti per qualcosa di serio, ma sto solo armeggiando con la lingua e questo mi sta facendo impazzire. Ho provato ad aggiungere #[allow(dead_code)] al mio codice, […]

Come faccio a convertire una stringa C in una stringa di Rust e viceversa tramite FFI?

Sto cercando di ottenere una stringa C restituita da una libreria C e convertirla in una stringa di Rust tramite FFI. mylib.c const char* hello(){ return “Hello World!”; } main.rs #![feature(link_args)] extern crate libc; use libc::c_char; #[link_args = “-L . -I . -lmylib”] extern { fn hello() -> *c_char; } fn main() { //how do […]

Sé mutevole durante la lettura dall’object proprietario

Ho un object che ne possiede un altro. L’object di proprietà ha un metodo di muting che dipende dai metodi non mutanti del suo proprietario. L’architettura (semplificata il più ansible) si presenta così: struct World { animals: Vec, } impl World { fn feed_all(&mut self) { for i in 0..self.animals.len() { self.animals[i].feed(self); } } } […]

Come aggiornare o inserire su un Vec?

Sto scrivendo una struttura dati in Rust. Contiene un Vec di coppie chiave-valore. Quando si inserisce nella struttura, devo trovare una chiave corrispondente e aggiornare sia la chiave che il valore (che in realtà è un puntatore figlio). Il codice sembra un po ‘come questo, dove pivots è un ref mut di Vec e Pivot […]

È ansible dichiarare le variabili proceduralmente usando le macro di Rust?

Fondamentalmente, ci sono due parti per questa domanda: Puoi passare un identificatore sconosciuto a una macro in Rust ? Puoi combinare stringhe per generare nuovi nomi di variabili in una macro di Rust? Ad esempio, qualcosa come: macro_rules! expand( ($x:ident) => ( let mut x_$x = 0; ) ) Calling expand! (Hi) ovvio fallisce perché […]

Cambia la variante enum mentre sposti il ​​campo nella nuova variante

Voglio aggiornare una variante enum spostando un campo della vecchia variante a quella nuova senza alcuna clonazione: enum X { X1(String), X2(String), } fn increment_x(x: &mut X) { match x { &mut X::X1(s) => { *x = X::X2(s); } &mut X::X2(s) => { *x = X::X1(s); } } } Questo non funziona perché non possiamo […]

Posso restituire in modo efficiente un object in base al valore in Rust?

Vorrei inizializzare un object grande con una funzione. Attualmente ho: fn initialize(mydata: &mut Vec<Vec>) { /* … */ } Preferirei avere: fn initialize() -> Vec<Vec> { /* … */ } Ho sentito dire che C ++ implementa spesso l’ottimizzazione del valore di ritorno (RVO), se sei fortunato e hai un buon compilatore. Possiamo disabilitare la […]

Come posso condividere un object mutabile tra i thread?

Sto cercando di condividere un object mutabile tra i thread in Rust usando Arc , ma ottengo questo errore: error: cannot borrow immutable borrowed content as mutable –> src/main.rs:13:13 | 13 | shared_stats_clone.add_stats(&stats); | ^^^^^^^^^^^^^^^^^^ Questo è il codice di esempio: use std::thread; use std::sync::Arc; fn main() { let mut total_stats = Stats::new(); let mut […]

Come faccio a passare fette disgiunte da un vettore a thread diversi?

Sono nuovo di Rust e sto lottando per affrontare tutti quei tipi di wrapper in Rust. Sto cercando di scrivere un codice semanticamente uguale al seguente codice C. Il codice tenta di creare una grande tabella per la conservazione dei libri, ma dividerà la tabella grande in modo che ogni thread acceda solo alle piccole […]