требуется для f, чтобы не писать его явно?
https://play.rust-lang.org/?version=stable&mode=debug&edition=2015&gist=1d62e6c9e8f692ba1326ac6c89b88d83
У тебя сразу неопределённое поведение. fn() типы не могут быть чем либо кроме самих функций (let f = instance;). У тебя неопределённое поведение на платформах, где ptr::null().addr() == 0, поэтому используй Option<... fn(...) -> ...> и лучше None вместо нуля: https://rust-lang.github.io/unsafe-code-guidelines/layout/function-pointers.html#representation Ещё нельзя вызывать неправильные указатели функций. К тому же, не описав нужный тип указателя функции, получить указатель на функцию нельзя, даже из выражения instance, так как оно на самом деле имеет тип нулевой ширины.
...а у тебя действительно по нулевому адресу лежит что-то?
это действительно UB
0 чисто для примера использовал, у меня реальный указатель, который нужно скастить в функцию.
ну учитывай что указатель может быть null, а fn() — нет
Обсуждают сегодня