From a0f2aba67a3f4aae177dee01e17aec85cfab3595 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eric=20F=C3=B6rster?= Date: Wed, 1 May 2019 14:10:32 +0200 Subject: [PATCH] Add macro to combine features with optional values --- src/feature.rs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/feature.rs b/src/feature.rs index 4477aa65..180d5641 100644 --- a/src/feature.rs +++ b/src/feature.rs @@ -32,6 +32,23 @@ macro_rules! concat_feature { }}; } +#[macro_export] +macro_rules! choice_feature { + ($request:expr) => { + None + }; + ($request:expr, $provider:tt, $($providers:tt),*) => {{ + $( + let value = await!($provider::execute($request)); + if value.is_some() { + value + } else { + choice_feature!($request, $(providers),*) + } + )+ + }}; +} + #[cfg(test)] use lsp_types::*;