Replies: 2 comments
-
You can do this by implementing struct OddNumber(u32);
impl<'a> FromParam<'a> for OddNumber {
type Error = &'static str;
fn from_param(param: &'a str) -> Result<Self, Self::Error> {
if let Ok(number) = param.parse::<u32>() {
if number % 2 == 1 {
Ok(Self(number))
} else {
Err("Even Number")
}
} else {
Err("Not a valid number")
}
}
}
#[get("/number/<num>", rank = 1)]
fn odd_number(num: OddNumber) -> Option<content::RawHtml<String>> {
let html = format!("Odd number: {:?}", num.0);
return Some(content::RawHtml(html));
}
#[get("/number/<num>", rank = 2)]
fn any_number(num: u32) -> content::RawHtml<String> {
let html = format!("Any number: {num:?}");
return content::RawHtml(html);
} If the |
Beta Was this translation helpful? Give feedback.
0 replies
-
A more general answer - you can't forward a request once a handler has executed. Rocket doesn't allow more than one handler to run for a given request. More specifically, Rocket can only run at most one data guard, since Rocket uses a streaming data model for the request body. @watsom27's answer would help for your specific situation listed here, but I this may not always be possible. |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
I was hoping to be able to forward a request from within a route by returning a
None
- not a guard. I tried this:Unfortunately I get a
404 Not Found
for the 42 and theany_number
functions is not called.Did I make a mistake in the example or is there some other way to do this from within the route?
Beta Was this translation helpful? Give feedback.
All reactions