mirror of
https://github.com/cargo-bins/cargo-binstall.git
synced 2025-04-21 04:58:42 +00:00
Optimize arg parsing: Avoid O(n) Vec::remove
Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>
This commit is contained in:
parent
ef72f851f7
commit
c418c2dbbe
1 changed files with 14 additions and 3 deletions
17
src/main.rs
17
src/main.rs
|
@ -186,9 +186,20 @@ async fn entry(jobserver_client: LazyJobserverClient) -> Result<()> {
|
||||||
// `cargo run -- --help` gives ["target/debug/cargo-binstall", "--help"]
|
// `cargo run -- --help` gives ["target/debug/cargo-binstall", "--help"]
|
||||||
// `cargo binstall --help` gives ["/home/ryan/.cargo/bin/cargo-binstall", "binstall", "--help"]
|
// `cargo binstall --help` gives ["/home/ryan/.cargo/bin/cargo-binstall", "binstall", "--help"]
|
||||||
let mut args: Vec<OsString> = std::env::args_os().collect();
|
let mut args: Vec<OsString> = std::env::args_os().collect();
|
||||||
if args.len() > 1 && args[1] == "binstall" {
|
let args = if args.len() > 1 && args[1] == "binstall" {
|
||||||
args.remove(1);
|
// Equivalent to
|
||||||
}
|
//
|
||||||
|
// args.remove(1);
|
||||||
|
//
|
||||||
|
// But is O(1)
|
||||||
|
args.swap(0, 1);
|
||||||
|
let mut args = args.into_iter();
|
||||||
|
drop(args.next().unwrap());
|
||||||
|
|
||||||
|
args
|
||||||
|
} else {
|
||||||
|
args.into_iter()
|
||||||
|
};
|
||||||
|
|
||||||
// Load options
|
// Load options
|
||||||
let mut opts = Options::parse_from(args);
|
let mut opts = Options::parse_from(args);
|
||||||
|
|
Loading…
Add table
Reference in a new issue