CommonLibrary/LanguageFeature/ProvideTypeHierarchy.rs
1//! # ProvideTypeHierarchy Effect
2//!
3//! Defines the `ActionEffect` for requesting type hierarchy supertypes from a
4//! language feature provider.
5
6use std::sync::Arc;
7
8use serde_json::Value;
9
10use super::LanguageFeatureProviderRegistry::LanguageFeatureProviderRegistry;
11use crate::{Effect::ActionEffect::ActionEffect, Error::CommonError::CommonError};
12
13/// Creates an effect that, when executed, will request type hierarchy
14/// supertypes.
15pub fn ProvideTypeHierarchy(
16 ItemDTO:Value,
17) -> ActionEffect<Arc<dyn LanguageFeatureProviderRegistry>, CommonError, Option<Value>> {
18 ActionEffect::New(Arc::new(move |Registry:Arc<dyn LanguageFeatureProviderRegistry>| {
19 let ItemDTOClone = ItemDTO.clone();
20
21 Box::pin(async move { Registry.ProvideTypeHierarchySupertypes(ItemDTOClone).await })
22 }))
23}