@@ -108,7 +108,7 @@ impl NumberType {
108108 /// # Errors
109109 ///
110110 /// If the string is not one of the valid number types,
111- /// if `K` is not a nonnegative integer,
111+ /// if `K` is not a non-negative integer,
112112 /// or if `K` is 0,
113113 /// or if `N` is not a positive integer,
114114 /// or if `K` is greater than `N`
@@ -117,9 +117,9 @@ impl NumberType {
117117 fn is_invalid_chunk ( chunk_number : u64 , num_chunks : u64 ) -> bool {
118118 chunk_number > num_chunks || chunk_number == 0
119119 }
120- let parts: Vec < & str > = s. split ( '/' ) . collect ( ) ;
121- match & parts[ .. ] {
122- [ n_str] => {
120+ let mut parts = s. splitn ( 4 , '/' ) ;
121+ match ( parts. next ( ) , parts . next ( ) , parts . next ( ) , parts . next ( ) ) {
122+ ( Some ( n_str) , None , None , None ) => {
123123 let num_chunks = parse_size_u64 ( n_str)
124124 . map_err ( |_| NumberTypeError :: NumberOfChunks ( n_str. to_string ( ) ) ) ?;
125125 if num_chunks > 0 {
@@ -128,7 +128,9 @@ impl NumberType {
128128 Err ( NumberTypeError :: NumberOfChunks ( s. to_string ( ) ) )
129129 }
130130 }
131- [ k_str, n_str] if !k_str. starts_with ( 'l' ) && !k_str. starts_with ( 'r' ) => {
131+ ( Some ( k_str) , Some ( n_str) , None , None )
132+ if !k_str. starts_with ( 'l' ) && !k_str. starts_with ( 'r' ) =>
133+ {
132134 let num_chunks = parse_size_u64 ( n_str)
133135 . map_err ( |_| NumberTypeError :: NumberOfChunks ( n_str. to_string ( ) ) ) ?;
134136 let chunk_number = parse_size_u64 ( k_str)
@@ -138,12 +140,12 @@ impl NumberType {
138140 }
139141 Ok ( Self :: KthBytes ( chunk_number, num_chunks) )
140142 }
141- [ "l" , n_str] => {
143+ ( Some ( "l" ) , Some ( n_str) , None , None ) => {
142144 let num_chunks = parse_size_u64 ( n_str)
143145 . map_err ( |_| NumberTypeError :: NumberOfChunks ( n_str. to_string ( ) ) ) ?;
144146 Ok ( Self :: Lines ( num_chunks) )
145147 }
146- [ "l" , k_str, n_str] => {
148+ ( Some ( "l" ) , Some ( k_str) , Some ( n_str) , None ) => {
147149 let num_chunks = parse_size_u64 ( n_str)
148150 . map_err ( |_| NumberTypeError :: NumberOfChunks ( n_str. to_string ( ) ) ) ?;
149151 let chunk_number = parse_size_u64 ( k_str)
@@ -153,12 +155,12 @@ impl NumberType {
153155 }
154156 Ok ( Self :: KthLines ( chunk_number, num_chunks) )
155157 }
156- [ "r" , n_str] => {
158+ ( Some ( "r" ) , Some ( n_str) , None , None ) => {
157159 let num_chunks = parse_size_u64 ( n_str)
158160 . map_err ( |_| NumberTypeError :: NumberOfChunks ( n_str. to_string ( ) ) ) ?;
159161 Ok ( Self :: RoundRobin ( num_chunks) )
160162 }
161- [ "r" , k_str, n_str] => {
163+ ( Some ( "r" ) , Some ( k_str) , Some ( n_str) , None ) => {
162164 let num_chunks = parse_size_u64 ( n_str)
163165 . map_err ( |_| NumberTypeError :: NumberOfChunks ( n_str. to_string ( ) ) ) ?;
164166 let chunk_number = parse_size_u64 ( k_str)
0 commit comments