hypershell-components 0.1.0

Modular DSL for shellscripting in Rust
Documentation
use core::marker::PhantomData;

use cgp::prelude::*;

use crate::components::{HasHttpMethodType, MethodArgExtractor, MethodArgExtractorComponent};
use crate::dsl::FieldArg;

#[cgp_new_provider]
impl<Context, Tag> MethodArgExtractor<Context, FieldArg<Tag>> for ExtractMethodFieldArg
where
    Context: HasHttpMethodType + HasField<Tag, Value = Context::HttpMethod>,
    Context::HttpMethod: Clone,
{
    fn extract_method_arg(
        context: &Context,
        _phantom: PhantomData<FieldArg<Tag>>,
    ) -> Context::HttpMethod {
        context.get_field(PhantomData).clone()
    }
}