Jak uzyskać adres funkcji w Rust? Co dokładnie oznacza "&"?Jak uzyskać adres funkcji?
jaki adres mogę dostać robi
std::mem::transmute::<_, u32>(function)
lub
std::mem::transmute::<_, u32>(&function)
(w systemie 32-bitowym, oczywiście)?
Co
&function as *const _ as *const c_void
dać?
UPD. Odpowiedź @Shepmaster poniżej daje odpowiedź na to pytanie (choć podaje też inne nieistotne, ale może być przydatne dla niektórych informacji). Podsumuję to tutaj.
Uzyskanie adresu jest proste, wystarczy
funct as *const()
odniesienia do funkcji wydaje się utworzenie zmiennej lokalnej podobnie jak z
let a = &42;
Czy jesteś zaznajomiony z Rust Playground [] (https://play.rust-lang.org /)? Pozwoli ci to odpowiedzieć na pytania typu "jaki wynik ma ten kod". – Shepmaster
Jeśli chcesz przechowywać wskaźnik w całości, użyj 'usize' zamiast' u32' lub 'u64', to gwarantuje, że ma taki sam rozmiar jak wskaźnik. –
@Shepmaster: Wiem jaki jest wynik tego kodu (I kbow jak uruchamiać programy rdzy, tak ;-)), pytanie dotyczy tego, jakie dokładnie adresy dostaję, a odpowiedź poniżej rzuca światło na to. –