Ho bisogno di allineare una struttura a un limite di 16 byte in Rust. Sembra possibile dare suggerimenti sull'allineamento completo del repr
attribute, ma non supporta questo caso d'uso esatto.Come allineare una struttura a un limite di byte specificato?
Un test funzionale di quello che sto cercando di realizzare è un tipo Foo
tale che
assert_eq!(mem::align_of::<Foo>(), 16);
o, in alternativa, una struttura Bar
con un campo baz
tale che
println!("{:p}", Bar::new().baz);
stampa sempre un numero divisibile per 16.
È attualmente possibile in Rust? Ci sono dei work-arounds?
Vuoi dire che vuoi avere una struttura nell'heap con un allineamento specifico? Non sono a conoscenza dell'allineamento per i tipi allocati allo stack, ma l'unstable ['allocate'] (http://doc.rust-lang.org/std/rt/heap/fn.allocate.html) ha un allineamento discussione. – Shepmaster
Inoltre, si parla dell'imballaggio come allineamento decrescente; intendi dire che devi avere un * membro * di una struttura sempre ad un allineamento specifico? Potresti voler rafforzare la tua domanda con qualche codice di esempio, diagrammi di memoria ASCII-art o più prosa che descrivono il motivo per cui devi farlo in modo che tutte le persone siano più intelligenti di quanto io possa aiutarti.^_^ – Shepmaster
Grazie per il feedback, @Shepmaster! Intendevo allineato in generale, ma sì, il mio caso d'uso specifico è per lo stack. Aggiornerò la mia domanda per essere più chiara. –