Указатель функции со ссылочным аргументом не может получить отладку - PullRequest
0 голосов
/ 19 ноября 2018

У меня есть enum, где я хочу обобщить указатель на функцию.Как только я добавлю ссылку в определение указателя функции.он не может скомпилироваться, потому что не может напечатать его с Debug:

fn div1(t: i64, b: i64) -> i64 {
    t / b
}

fn div2(t: i64, b: &i64) -> i64 {
    t / b
}

#[derive(Debug)]
enum Enum {
    FnTest1(fn(i64, i64) -> i64),
    FnTest2(fn(i64, &i64) -> i64),
}

fn main() {
    println!("{:?}", Enum::FnTest1(div1));
    println!("{:?}", Enum::FnTest2(div2));
}

Я получаю сообщение об ошибке:

error[E0277]: `for<'r> fn(i64, &'r i64) -> i64` doesn't implement `std::fmt::Debug`
  --> src/main.rs:12:13
   |
12 |     FnTest2(fn(i64, &i64) -> i64),
   |             ^^^^^^^^^^^^^^^^^^^^ `for<'r> fn(i64, &'r i64) -> i64` cannot be formatted using `{:?}` because it doesn't implement `std::fmt::Debug`
   |
   = help: the trait `std::fmt::Debug` is not implemented for `for<'r> fn(i64, &'r i64) -> i64`
   = note: required because of the requirements on the impl of `std::fmt::Debug` for `&for<'r> fn(i64, &'r i64) -> i64`
   = note: required for the cast to the object type `dyn std::fmt::Debug`

Отображается только ошибка для FnTest2, которая имеетссылочный аргумент, в то время как FnTest1 работает нормально.

Это ошибка в Rust или есть решение или альтернативный метод для этой проблемы?

Я запускаю Rust по ночам (rustup говорит: rustc 1.30.0-nightly (ae7fe84e8 2018-09-26)).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...