Come posso convertire una String in una &str ? Più specificamente, mi piacerebbe convertirlo in una str con la durata static ( &’static str ).
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, […]
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 […]
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); } } } […]
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 […]
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é […]
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 […]
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 […]
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 […]
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 […]