@@ -26,7 +26,7 @@ pub struct ParsedUri<'a> {
2626 repository : RegisteredName < ' a > ,
2727}
2828
29- impl ParsedUri < ' _ > {
29+ impl < ' a > ParsedUri < ' a > {
3030 pub fn region ( & self ) -> Option < & str > {
3131 self . region . as_ref ( ) . map ( Scheme :: as_str)
3232 }
@@ -47,20 +47,8 @@ impl ParsedUri<'_> {
4747 repository : self . repository . into_owned ( ) ,
4848 }
4949 }
50- }
51-
52- impl < ' a > TryFrom < & ' a String > for ParsedUri < ' a > {
53- type Error = ParseUriError ;
54-
55- fn try_from ( value : & ' a String ) -> Result < Self , Self :: Error > {
56- Self :: try_from ( value. as_str ( ) )
57- }
58- }
59-
60- impl < ' a > TryFrom < & ' a str > for ParsedUri < ' a > {
61- type Error = ParseUriError ;
6250
63- fn try_from ( input : & ' a str ) -> Result < Self , Self :: Error > {
51+ pub fn new ( input : & ' a str ) -> Result < Self , ParseUriError > {
6452 // Git removes this prefix before invoking the helper; but, we're checking for
6553 // it anyways to be safe as otherwise it would be an invalid URI.
6654 let value = input. strip_prefix ( PREFIX_WITH_REGION ) . unwrap_or ( input) ;
@@ -136,12 +124,7 @@ trait SingleExt: IntoIterator {
136124 {
137125 let mut iter = self . into_iter ( ) ;
138126 let first = iter. next ( ) ?;
139- // note: https://doc.rust-lang.org/nightly/edition-guide/rust-2024/temporary-tail-expr-scope.html
140- if iter. next ( ) . is_none ( ) {
141- Some ( first)
142- } else {
143- None
144- }
127+ iter. next ( ) . is_none ( ) . then_some ( first)
145128 }
146129}
147130
@@ -153,23 +136,23 @@ mod tests {
153136
154137 #[ test]
155138 fn test_base_example ( ) {
156- let parsed_uri = ParsedUri :: try_from ( "codecommit://my-repo" ) . expect ( "valid URI" ) ;
139+ let parsed_uri = ParsedUri :: new ( "codecommit://my-repo" ) . expect ( "valid URI" ) ;
157140 assert_eq ! ( None , parsed_uri. region( ) ) ;
158141 assert_eq ! ( None , parsed_uri. profile( ) ) ;
159142 assert_eq ! ( "my-repo" , parsed_uri. repository( ) ) ;
160143 }
161144
162145 #[ test]
163146 fn test_base_example_with_profile ( ) {
164- let parsed_uri = ParsedUri :: try_from ( "codecommit://my-profile@my-repo" ) . expect ( "valid URI" ) ;
147+ let parsed_uri = ParsedUri :: new ( "codecommit://my-profile@my-repo" ) . expect ( "valid URI" ) ;
165148 assert_eq ! ( None , parsed_uri. region( ) ) ;
166149 assert_eq ! ( Some ( "my-profile" ) , parsed_uri. profile( ) ) ;
167150 assert_eq ! ( "my-repo" , parsed_uri. repository( ) ) ;
168151 }
169152
170153 #[ test]
171154 fn test_region_example ( ) {
172- let parsed_uri = ParsedUri :: try_from ( "codecommit::us-east-1://my-repo" ) . expect ( "valid URI" ) ;
155+ let parsed_uri = ParsedUri :: new ( "codecommit::us-east-1://my-repo" ) . expect ( "valid URI" ) ;
173156 assert_eq ! ( Some ( "us-east-1" ) , parsed_uri. region( ) ) ;
174157 assert_eq ! ( None , parsed_uri. profile( ) ) ;
175158 assert_eq ! ( "my-repo" , parsed_uri. repository( ) ) ;
@@ -178,23 +161,23 @@ mod tests {
178161 #[ test]
179162 fn test_region_example_with_profile ( ) {
180163 let parsed_uri =
181- ParsedUri :: try_from ( "codecommit::us-east-1://my-profile@my-repo" ) . expect ( "valid URI" ) ;
164+ ParsedUri :: new ( "codecommit::us-east-1://my-profile@my-repo" ) . expect ( "valid URI" ) ;
182165 assert_eq ! ( Some ( "us-east-1" ) , parsed_uri. region( ) ) ;
183166 assert_eq ! ( Some ( "my-profile" ) , parsed_uri. profile( ) ) ;
184167 assert_eq ! ( "my-repo" , parsed_uri. repository( ) ) ;
185168 }
186169
187170 #[ test]
188171 fn test_region_from_git_example ( ) {
189- let parsed_uri = ParsedUri :: try_from ( "us-east-1://my-repo" ) . expect ( "valid URI" ) ;
172+ let parsed_uri = ParsedUri :: new ( "us-east-1://my-repo" ) . expect ( "valid URI" ) ;
190173 assert_eq ! ( Some ( "us-east-1" ) , parsed_uri. region( ) ) ;
191174 assert_eq ! ( None , parsed_uri. profile( ) ) ;
192175 assert_eq ! ( "my-repo" , parsed_uri. repository( ) ) ;
193176 }
194177
195178 #[ test]
196179 fn test_region_from_git_example_with_profile ( ) {
197- let parsed_uri = ParsedUri :: try_from ( "us-east-1://my-profile@my-repo" ) . expect ( "valid URI" ) ;
180+ let parsed_uri = ParsedUri :: new ( "us-east-1://my-profile@my-repo" ) . expect ( "valid URI" ) ;
198181 assert_eq ! ( Some ( "us-east-1" ) , parsed_uri. region( ) ) ;
199182 assert_eq ! ( Some ( "my-profile" ) , parsed_uri. profile( ) ) ;
200183 assert_eq ! ( "my-repo" , parsed_uri. repository( ) ) ;
@@ -203,7 +186,7 @@ mod tests {
203186 #[ test]
204187 fn test_invalid_uri ( ) {
205188 assert ! ( matches!(
206- ParsedUri :: try_from ( "codecommit::my-repo" ) ,
189+ ParsedUri :: new ( "codecommit::my-repo" ) ,
207190 Err ( ParseUriError :: InvalidUri ( _) )
208191 ) ) ;
209192 }
@@ -212,77 +195,77 @@ mod tests {
212195 fn test_missing_authority ( ) {
213196 assert_eq ! (
214197 Err ( ParseUriError :: MissingAuthority ) ,
215- ParsedUri :: try_from ( "codecommit:" ) ,
198+ ParsedUri :: new ( "codecommit:" ) ,
216199 ) ;
217200 }
218201
219202 #[ test]
220203 fn test_unexpected_path ( ) {
221204 assert_eq ! (
222205 Err ( ParseUriError :: UnexpectedPath ) ,
223- ParsedUri :: try_from ( "codecommit:///my-repo" ) ,
206+ ParsedUri :: new ( "codecommit:///my-repo" ) ,
224207 ) ;
225208 }
226209
227210 #[ test]
228211 fn test_unexpected_query ( ) {
229212 assert_eq ! (
230213 Err ( ParseUriError :: UnexpectedQuery ) ,
231- ParsedUri :: try_from ( "codecommit://my-repo?query" ) ,
214+ ParsedUri :: new ( "codecommit://my-repo?query" ) ,
232215 ) ;
233216 }
234217
235218 #[ test]
236219 fn test_unexpected_fragment ( ) {
237220 assert_eq ! (
238221 Err ( ParseUriError :: UnexpectedFragment ) ,
239- ParsedUri :: try_from ( "codecommit://my-repo#fragment" ) ,
222+ ParsedUri :: new ( "codecommit://my-repo#fragment" ) ,
240223 ) ;
241224 }
242225
243226 #[ test]
244227 fn test_unexpected_password ( ) {
245228 assert_eq ! (
246229 Err ( ParseUriError :: UnexpectedPassword ) ,
247- ParsedUri :: try_from ( "codecommit://user:pass@my-repo" ) ,
230+ ParsedUri :: new ( "codecommit://user:pass@my-repo" ) ,
248231 ) ;
249232 }
250233
251234 #[ test]
252235 fn test_unexpected_port ( ) {
253236 assert_eq ! (
254237 Err ( ParseUriError :: UnexpectedPort ) ,
255- ParsedUri :: try_from ( "codecommit://my-repo:1234" ) ,
238+ ParsedUri :: new ( "codecommit://my-repo:1234" ) ,
256239 ) ;
257240 }
258241
259242 #[ test]
260243 fn test_unexpected_ipv4_for_repo ( ) {
261244 assert_eq ! (
262245 Err ( ParseUriError :: UnexpectedIpForRepositoryName ) ,
263- ParsedUri :: try_from ( "codecommit://127.0.0.1" ) ,
246+ ParsedUri :: new ( "codecommit://127.0.0.1" ) ,
264247 ) ;
265248 }
266249
267250 #[ test]
268251 fn test_unexpected_ipv6_for_repo ( ) {
269252 assert_eq ! (
270253 Err ( ParseUriError :: UnexpectedIpForRepositoryName ) ,
271- ParsedUri :: try_from ( "codecommit://[::1]" ) ,
254+ ParsedUri :: new ( "codecommit://[::1]" ) ,
272255 ) ;
273256 }
274257
275258 #[ test]
276259 fn test_empty_repo_name ( ) {
277260 assert_eq ! (
278261 Err ( ParseUriError :: EmptyRepositoryName ) ,
279- ParsedUri :: try_from ( "codecommit://" ) ,
262+ ParsedUri :: new ( "codecommit://" ) ,
280263 ) ;
281264 }
282265
283266 #[ test]
284267 fn test_to_owned ( ) {
285- let parsed_uri = ParsedUri :: try_from ( "codecommit://my-repo" ) . expect ( "valid URI" ) ;
268+ let parsed_uri = ParsedUri :: new ( "codecommit://my-repo" ) . expect ( "valid URI" ) ;
286269 let owned = parsed_uri. into_owned ( ) ;
287270 assert_eq ! ( None , owned. region( ) ) ;
288271 assert_eq ! ( None , owned. profile( ) ) ;
@@ -292,39 +275,39 @@ mod tests {
292275 #[ test]
293276 fn test_try_from_owned ( ) {
294277 let s = "codecommit://my-repo" . to_owned ( ) ;
295- let parsed_uri = ParsedUri :: try_from ( & s) . expect ( "valid URI" ) ;
278+ let parsed_uri = ParsedUri :: new ( & s) . expect ( "valid URI" ) ;
296279 assert_eq ! ( None , parsed_uri. region( ) ) ;
297280 assert_eq ! ( None , parsed_uri. profile( ) ) ;
298281 assert_eq ! ( "my-repo" , parsed_uri. repository( ) ) ;
299282 }
300283
301284 #[ test]
302285 fn test_to_string ( ) {
303- let parsed_uri = ParsedUri :: try_from ( "codecommit://my-repo" )
286+ let parsed_uri = ParsedUri :: new ( "codecommit://my-repo" )
304287 . expect ( "valid URI" )
305288 . to_string ( ) ;
306289 assert_eq ! ( "codecommit://my-repo" , parsed_uri) ;
307290 }
308291
309292 #[ test]
310293 fn test_to_string_with_profile ( ) {
311- let parsed_uri = ParsedUri :: try_from ( "codecommit://my-profile@my-repo" )
294+ let parsed_uri = ParsedUri :: new ( "codecommit://my-profile@my-repo" )
312295 . expect ( "valid URI" )
313296 . to_string ( ) ;
314297 assert_eq ! ( "codecommit://my-profile@my-repo" , parsed_uri) ;
315298 }
316299
317300 #[ test]
318301 fn test_to_string_with_region ( ) {
319- let parsed_uri = ParsedUri :: try_from ( "codecommit::us-west-2://my-repo" )
302+ let parsed_uri = ParsedUri :: new ( "codecommit::us-west-2://my-repo" )
320303 . expect ( "valid URI" )
321304 . to_string ( ) ;
322305 assert_eq ! ( "codecommit::us-west-2://my-repo" , parsed_uri) ;
323306 }
324307
325308 #[ test]
326309 fn test_to_string_with_profile_and_region ( ) {
327- let parsed_uri = ParsedUri :: try_from ( "codecommit::us-west-2://my-profile@my-repo" )
310+ let parsed_uri = ParsedUri :: new ( "codecommit::us-west-2://my-profile@my-repo" )
328311 . expect ( "valid URI" )
329312 . to_string ( ) ;
330313 assert_eq ! ( "codecommit::us-west-2://my-profile@my-repo" , parsed_uri) ;
0 commit comments