Могу ли я использовать указатель функции в признаке для вызова функции-члена в структуре - PullRequest
0 голосов
/ 10 апреля 2020

Я изучаю Rust и играю с чертами.

В этом примере я получаю следующую ошибку:

trait HasArea {
    fn area(&self) -> f64;
}

type FPTR = fn() -> f64;
trait MyTrait {
    fn hof_test(&self, func: FPTR) -> FPTR {
        func
    }
}

struct Square {
    side: f64,
}
impl HasArea for Square {
    fn area(&self) -> f64 {
        self.side * self.side
    }
}

impl MyTrait for Square {}

fn main() {
    let sq = Square { side: 6.2 };

    let area = sq.hof_test(sq.area)();
}

Ошибка:

error[E0615]: attempted to take value of method `area` on type `Square`
  --> src/main.rs:26:31
   |
26 |     let area = sq.hof_test(sq.area)();
   |                               ^^^^ help: use parentheses to call the method: `area()`

детская площадка

Есть ли способ назвать Square.area() вот так?

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