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 binstall --help` gives ["/home/ryan/.cargo/bin/cargo-binstall", "binstall", "--help"]
|
||||
let mut args: Vec<OsString> = std::env::args_os().collect();
|
||||
if args.len() > 1 && args[1] == "binstall" {
|
||||
args.remove(1);
|
||||
}
|
||||
let args = if args.len() > 1 && args[1] == "binstall" {
|
||||
// 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
|
||||
let mut opts = Options::parse_from(args);
|
||||
|
|
Loading…
Add table
Reference in a new issue