Trait core::any::Provider

source ·
pub trait Provider {
    // Required method
    fn provide<'a>(&'a self, demand: &mut Demand<'a>);
}
🔬This is a nightly-only experimental API. (provide_any #96024)
Expand description

Trait 由可以根据类型动态提供值的类型实现。

Required Methods§

source

fn provide<'a>(&'a self, demand: &mut Demand<'a>)

🔬This is a nightly-only experimental API. (provide_any #96024)

数据提供者应实现此方法以提供他们能够通过使用 demand 提供的所有值。

请注意,Demand 上的 provide_* 方法具有短路语义: 如果较早的方法已成功提供值,则以后的方法将没有机会提供。

Examples

提供对类型为 String 的字段的引用作为 &str,以及类型为 i32 的值。

use std::any::{Provider, Demand};

impl Provider for SomeConcreteType {
    fn provide<'a>(&'a self, demand: &mut Demand<'a>) {
        demand.provide_ref::<str>(&self.field)
            .provide_value::<i32>(self.num_field);
    }
}
Run

Implementors§

source§

impl<E> Provider for Ewhere E: Error + ?Sized,