@@ -27,22 +27,22 @@ fn compare_version_vec(a: &[u64], b: &[u64]) -> std::cmp::Ordering {
2727pub fn split_repo_tag_digest ( s : & str ) -> ( & str , Option < & str > , Option < & str > ) {
2828 // Return (repo, tag_opt, digest_opt)
2929 let last_slash = s. rfind ( '/' ) ;
30- if let Some ( at_pos) = s. rfind ( '@' ) {
31- if last_slash. map_or ( true , |ls| at_pos > ls) {
32- // If there is a tag before the @ (colon after last slash), strip it from repo
33- let before_at = & s[ ..at_pos] ;
34- if let Some ( col_pos) = before_at. rfind ( ':' ) {
35- if last_slash. map_or ( true , |ls| col_pos > ls) {
36- return ( & before_at[ ..col_pos] , None , Some ( & s[ at_pos + 1 ..] ) ) ;
37- }
38- }
39- return ( before_at, None , Some ( & s[ at_pos + 1 ..] ) ) ;
30+ if let Some ( at_pos) = s. rfind ( '@' )
31+ && last_slash. is_none_or ( |ls| at_pos > ls)
32+ {
33+ // If there is a tag before the @ (colon after last slash), strip it from repo
34+ let before_at = & s[ ..at_pos] ;
35+ if let Some ( col_pos) = before_at. rfind ( ':' )
36+ && last_slash. is_none_or ( |ls| col_pos > ls)
37+ {
38+ return ( & before_at[ ..col_pos] , None , Some ( & s[ at_pos + 1 ..] ) ) ;
4039 }
40+ return ( before_at, None , Some ( & s[ at_pos + 1 ..] ) ) ;
4141 }
42- if let Some ( col_pos) = s. rfind ( ':' ) {
43- if last_slash. map_or ( true , |ls| col_pos > ls) {
44- return ( & s [ ..col_pos ] , Some ( & s [ col_pos + 1 .. ] ) , None ) ;
45- }
42+ if let Some ( col_pos) = s. rfind ( ':' )
43+ && last_slash. is_none_or ( |ls| col_pos > ls)
44+ {
45+ return ( & s [ ..col_pos ] , Some ( & s [ col_pos + 1 .. ] ) , None ) ;
4646 }
4747 ( s, None , None )
4848}
@@ -157,10 +157,10 @@ pub fn derive_image_prefill(
157157 // 1) try to find latest (case-insensitive)
158158 for img in & matching {
159159 let ( _repo, tag_opt, _digest) = split_repo_tag_digest ( img. as_str ( ) ) ;
160- if let Some ( tag) = tag_opt {
161- if tag. eq_ignore_ascii_case ( "latest" ) {
162- return ( filter , Some ( ( * img ) . clone ( ) ) ) ;
163- }
160+ if let Some ( tag) = tag_opt
161+ && tag. eq_ignore_ascii_case ( "latest" )
162+ {
163+ return ( filter , Some ( ( * img ) . clone ( ) ) ) ;
164164 }
165165 }
166166
@@ -185,7 +185,7 @@ pub fn derive_image_prefill(
185185 if let Some ( cap) = VERSION_RE . captures ( & tag_l) {
186186 let ver = & cap[ "ver" ] ;
187187 let nums: Vec < u64 > = ver
188- . split ( |c| c == '.' || c == '_' || c == '-' )
188+ . split ( [ '.' , '_' , '-' ] )
189189 . filter_map ( |p| p. parse :: < u64 > ( ) . ok ( ) )
190190 . collect ( ) ;
191191 if !nums. is_empty ( ) {
@@ -204,10 +204,10 @@ pub fn derive_image_prefill(
204204 // 4) fallback: pick first non-edge matching
205205 for img in & matching {
206206 let ( _repo, tag_opt, _digest) = split_repo_tag_digest ( img. as_str ( ) ) ;
207- if let Some ( tag) = tag_opt {
208- if tag. eq_ignore_ascii_case ( "edge" ) {
209- continue ;
210- }
207+ if let Some ( tag) = tag_opt
208+ && tag. eq_ignore_ascii_case ( "edge" )
209+ {
210+ continue ;
211211 }
212212 return ( filter, Some ( ( * img) . clone ( ) ) ) ;
213213 }
0 commit comments