Vorrei che un oggetto di grandi dimensioni dicesse Vec<Vec<MyStruct>
da inizializzare con una funzione. Attualmente hoPosso restituire in modo efficiente l'oggetto in base al valore in Rust?
fn initialize(mydata : &mut Vec<Vec<MyStruct>>) { ... }
quando vorrei
fn initialize() -> Vec<Vec<MyStruct>> { ... }
In C++ spesso così ho sentito, implementa l'ottimizzazione valore di ritorno, se si è fortunati e hanno un buon compilatore. Possiamo disabilitare la copia qui e averla restituita fondamentalmente da un puntatore nascosto che viene passato alla funzione? Ed è RVO parte della lingua o un'ottimizzazione opzionale?
[Questa discussione] (http://discuss.rust-lang.org/t/implementation-details/948/5) suggerisce che RVO si innesca per qualcosa di più grande di un puntatore. Ma c'è anche [questo problema aperto] (https://github.com/rust-lang/rust/issues/18363) riguardante NRVO. Quindi penso che dipenda esattamente da come si implementa 'initialize'. – Michael