1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.

use props::PropGet;

/// A read only property backed by a function.
#[derive(Clone, Copy)]
pub struct FnProp<F>(pub F);

impl<F, I, T> PropGet<I> for FnProp<F>
where
    F: Fn(I) -> T,
    T: Sized,
{
    type Output = T;

    #[inline(always)]
    fn get(&self, item: I) -> T {
        (self.0)(item)
    }
}