Hex Artifact Content
Not logged in

Artifact f537aaf3fce80a40e5eb8f9335c904e0407e24cd:


0000: 75 73 65 20 73 74 64 3a 3a 70 61 74 68 3a 3a 50  use std::path::P
0010: 61 74 68 3b 0a 0a 75 73 65 20 75 72 6c 3a 3a 55  ath;..use url::U
0020: 72 6c 3b 0a 0a 75 73 65 20 75 74 69 6c 3a 3a 7b  rl;..use util::{
0030: 68 75 6d 61 6e 2c 20 43 61 72 67 6f 52 65 73 75  human, CargoResu
0040: 6c 74 7d 3b 0a 0a 70 75 62 20 74 72 61 69 74 20  lt};..pub trait 
0050: 54 6f 55 72 6c 20 7b 0a 20 20 20 20 66 6e 20 74  ToUrl {.    fn t
0060: 6f 5f 75 72 6c 28 73 65 6c 66 29 20 2d 3e 20 43  o_url(self) -> C
0070: 61 72 67 6f 52 65 73 75 6c 74 3c 55 72 6c 3e 3b  argoResult<Url>;
0080: 0a 7d 0a 0a 69 6d 70 6c 3c 27 61 3e 20 54 6f 55  .}..impl<'a> ToU
0090: 72 6c 20 66 6f 72 20 26 27 61 20 73 74 72 20 7b  rl for &'a str {
00a0: 0a 20 20 20 20 66 6e 20 74 6f 5f 75 72 6c 28 73  .    fn to_url(s
00b0: 65 6c 66 29 20 2d 3e 20 43 61 72 67 6f 52 65 73  elf) -> CargoRes
00c0: 75 6c 74 3c 55 72 6c 3e 20 7b 0a 20 20 20 20 20  ult<Url> {.     
00d0: 20 20 20 55 72 6c 3a 3a 70 61 72 73 65 28 73 65     Url::parse(se
00e0: 6c 66 29 2e 6d 61 70 5f 65 72 72 28 7c 73 7c 20  lf).map_err(|s| 
00f0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 68 75  {.            hu
0100: 6d 61 6e 28 66 6f 72 6d 61 74 21 28 22 69 6e 76  man(format!("inv
0110: 61 6c 69 64 20 75 72 6c 20 60 7b 7d 60 3a 20 7b  alid url `{}`: {
0120: 7d 22 2c 20 73 65 6c 66 2c 20 73 29 29 0a 20 20  }", self, s)).  
0130: 20 20 20 20 20 20 7d 29 0a 20 20 20 20 7d 0a 7d        }).    }.}
0140: 0a 0a 69 6d 70 6c 3c 27 61 3e 20 54 6f 55 72 6c  ..impl<'a> ToUrl
0150: 20 66 6f 72 20 26 27 61 20 50 61 74 68 20 7b 0a   for &'a Path {.
0160: 20 20 20 20 66 6e 20 74 6f 5f 75 72 6c 28 73 65      fn to_url(se
0170: 6c 66 29 20 2d 3e 20 43 61 72 67 6f 52 65 73 75  lf) -> CargoResu
0180: 6c 74 3c 55 72 6c 3e 20 7b 0a 20 20 20 20 20 20  lt<Url> {.      
0190: 20 20 55 72 6c 3a 3a 66 72 6f 6d 5f 66 69 6c 65    Url::from_file
01a0: 5f 70 61 74 68 28 73 65 6c 66 29 2e 6d 61 70 5f  _path(self).map_
01b0: 65 72 72 28 7c 28 29 7c 20 7b 0a 20 20 20 20 20  err(|()| {.     
01c0: 20 20 20 20 20 20 20 68 75 6d 61 6e 28 66 6f 72         human(for
01d0: 6d 61 74 21 28 22 69 6e 76 61 6c 69 64 20 70 61  mat!("invalid pa
01e0: 74 68 20 75 72 6c 20 60 7b 7d 60 22 2c 20 73 65  th url `{}`", se
01f0: 6c 66 2e 64 69 73 70 6c 61 79 28 29 29 29 0a 20  lf.display())). 
0200: 20 20 20 20 20 20 20 7d 29 0a 20 20 20 20 7d 0a         }).    }.
0210: 7d 0a                                            }.