macro_rules! router_builder {
    ($($fn_name:ident),+ $(,)?) => { ... };
    (handlers: [$($handler:ident),* $(,)?], resources: [$($resource:expr),* $(,)?]) => { ... };
    (handlers: [$($handler:ident),* $(,)?]) => { ... };
}
Expand description

A simple macro to create a new RouterBuider from a list of handlers and optionaly a list of resources

§Pattern 1 - List of function handlers

router_builder!(
  create_project,
  list_projects,
  update_project,
  delete_project
);

Is equivalent to:

RouterBuilder::default()
    .append_dyn("create_project", create_project.into_box())
    .append_dyn("list_projects", list_projects.into_box())
    .append_dyn("update_project", update_project.into_box())
    .append_dyn("delete_project", delete_project.into_box())

§Pattern 2 - List of function handlers, and resources

router_builder!(
  handlers: [get_task, create_task],         // will be turned into routes
  resources: [ModelManager {}, AiManager {}] // common resources for all calls
);

Is equivalent to:

RouterBuilder::default()
    .append_dyn("get_task", get_task.into_box())
    .append_dyn("create_task", create_task.into_box())
    .append_resource(ModelManager {})
    .append_resource(AiManager {})

§Pattern 3 - Just for consistency with Pattern 2, we can have omit the resources

router_builder!(
  handlers: [get_task, create_task]
);