I am trying to use clap to create a CLI application. A Command has a constructor like this:
impl Command {
pub fn new(name: impl Into<Str>) -> Self {...}
}
But I need to pass there a name loaded from shared .so library. The only way I can use it is something like:
let mut registry = Registry::new();
registry.load("./libapp_addon_no1.so").ok();
registry.load("./libapp_addon_no2.so").ok();
for command in registry.commands() {
// command.name is a String
cli = cli.subcommand(Command::new(&*command.name.clone().leak()));
}
It works, but is there a better way to produce Into<Str> from a copy of String?
From
Str:You can use cargo to add the
stringfeature:Or you can edit Cargo.toml manually: