fix out of order fields in route definitions (#2356)
This commit is contained in:
1 parent
6234f60b0e
commit
39cef8fe42
1 file changed
+4
-4
@@ -130,7 +130,7 @@ pub fn static_segment_idx(idx: usize) -> Ident {
|
|||||||
|
|
||||||
pub fn parse_route_segments<'a>(
|
pub fn parse_route_segments<'a>(
|
||||||
route_span: Span,
|
route_span: Span,
|
||||||
mut fields: impl Iterator<Item = (&'a Ident, &'a Type)>,
|
fields: impl Iterator<Item = (&'a Ident, &'a Type)> + Clone,
|
||||||
route: &str,
|
route: &str,
|
||||||
) -> syn::Result<(Vec<RouteSegment>, Option<QuerySegment>)> {
|
) -> syn::Result<(Vec<RouteSegment>, Option<QuerySegment>)> {
|
||||||
let mut route_segments = Vec::new();
|
let mut route_segments = Vec::new();
|
||||||
@@ -163,7 +163,7 @@ pub fn parse_route_segments<'a>(
|
|||||||
segment.to_string()
|
segment.to_string()
|
||||||
};
|
};
|
||||||
|
|
||||||
let field = fields.find(|(name, _)| **name == ident);
|
let field = fields.clone().find(|(name, _)| **name == ident);
|
||||||
|
|
||||||
let ty = if let Some(field) = field {
|
let ty = if let Some(field) = field {
|
||||||
field.1.clone()
|
field.1.clone()
|
||||||
@@ -203,7 +203,7 @@ pub fn parse_route_segments<'a>(
|
|||||||
Some(query) => {
|
Some(query) => {
|
||||||
if let Some(query) = query.strip_prefix(":..") {
|
if let Some(query) = query.strip_prefix(":..") {
|
||||||
let query_ident = Ident::new(query, Span::call_site());
|
let query_ident = Ident::new(query, Span::call_site());
|
||||||
let field = fields.find(|(name, _)| *name == &query_ident);
|
let field = fields.clone().find(|(name, _)| *name == &query_ident);
|
||||||
|
|
||||||
let ty = if let Some((_, ty)) = field {
|
let ty = if let Some((_, ty)) = field {
|
||||||
ty.clone()
|
ty.clone()
|
||||||
@@ -229,7 +229,7 @@ pub fn parse_route_segments<'a>(
|
|||||||
}
|
}
|
||||||
if let Some(query_argument) = segment.strip_prefix(':') {
|
if let Some(query_argument) = segment.strip_prefix(':') {
|
||||||
let query_ident = Ident::new(query_argument, Span::call_site());
|
let query_ident = Ident::new(query_argument, Span::call_site());
|
||||||
let field = fields.find(|(name, _)| *name == &query_ident);
|
let field = fields.clone().find(|(name, _)| *name == &query_ident);
|
||||||
|
|
||||||
let ty = if let Some((_, ty)) = field {
|
let ty = if let Some((_, ty)) = field {
|
||||||
ty.clone()
|
ty.clone()
|
||||||
|
|||||||
Reference in new issue
Block a user