Как получить адрес функции в Rust? Что означает '& somefunction' точно означает?Как получить адрес функции?
Какие адреса я получить делать
std::mem::transmute::<_, u32>(function)
или
std::mem::transmute::<_, u32>(&function)
(на 32-битной системе, конечно)?
Что
&function as *const _ as *const c_void
дать?
UPD. Ответ от @Shepmaster ниже дает ответ на этот вопрос (хотя и дает и другие, не относящиеся к делу, но может быть полезен для информации кого-то). Я суммирую его здесь.
Получение адреса легко, просто
funct as *const()
Ссылка на функцию, кажется, создает локальную переменную так же, как с
let a = &42;
вы знакомы с [Rust Playground] (https://play.rust-lang.org /)? Это позволит вам отвечать на такие вопросы, как «какой вывод имеет этот код». – Shepmaster
Если вы хотите сохранить указатель в интеграле, используйте 'usize' вместо' u32' или 'u64', он будет иметь тот же размер, что и указатель. –
@Shepmaster: Я знаю, что является результатом этого кода (I kbow, как запустить программы ржавчины, да ;-)), вопрос в том, какие точные адреса я получаю, и вы отвечаете ниже, проливает свет на него. –