turbopack_node/
route_matcher.rs1use turbo_rcstr::RcStr;
2use turbo_tasks::{FxIndexMap, Vc};
3
4#[turbo_tasks::value]
5#[derive(Debug, Clone)]
6#[serde(untagged)]
7pub enum Param {
8 Single(RcStr),
9 Multi(Vec<RcStr>),
10}
11
12#[turbo_tasks::value(transparent)]
13#[derive(Debug, Clone)]
14pub struct Params(pub Option<FxIndexMap<RcStr, Param>>);
15
16pub trait RouteMatcherRef {
18 fn matches(&self, path: &str) -> bool;
20
21 fn params(&self, path: &str) -> Params;
23}
24
25#[turbo_tasks::value_trait]
27pub trait RouteMatcher {
28 fn matches(self: Vc<Self>, path: RcStr) -> Vc<bool>;
30
31 fn params(self: Vc<Self>, path: RcStr) -> Vc<Params>;
33}