rust clap 解析 ipv4Addr
rust clap parse ipv4Addr
我想使用 clap derive API 来解析 Ipv4Addr
。
#![allow(unused)]
use clap; // 3.1.6
use clap::Parser;
use std::net::Ipv4Addr;
#[derive(Parser, Debug)]
#[clap(author, version, about, long_about = None)]
struct Args {
#[clap(short, long, parse(from_str))]
ip_dst: Ipv4Addr,
}
fn main() {
let args = Args::parse();
}
我的尝试给出了以下错误,即使 Ipv4Addr 似乎实现了提供 from_str
的 FromStr
error[E0277]: the trait bound `Ipv4Addr: From<&str>` is not satisfied
--> src/main.rs:10:31
|
10 | #[clap(short, long, parse(from_str))]
| ^^^^^^^^ the trait `From<&str>` is not implemented for `Ipv4Addr`
|
= help: the following implementations were found:
<Ipv4Addr as From<[u8; 4]>>
<Ipv4Addr as From<u32>>
For more information about this error, try `rustc --explain E0277`.
我的问题是:
- 为什么没有使用
FromStr
提供的方法?
- 如何修复程序以执行我想要的操作?
你想要的是默认使用的(因为Ipv4Addr
实现了FromStr
),没有指定任何parse
选项:
use clap; // 3.1.6
use clap::Parser;
use std::net::Ipv4Addr;
#[derive(Parser, Debug)]
#[clap(author, version, about, long_about = None)]
struct Args {
#[clap(short, long)]
ip_dst: Ipv4Addr,
}
否则,您需要按照示例使用try_from_str
:
#![allow(unused)]
use clap; // 3.1.6
use clap::Parser;
use std::net::Ipv4Addr;
#[derive(Parser, Debug)]
#[clap(author, version, about, long_about = None)]
struct Args {
#[clap(short, long, parse(try_from_str))]
ip_dst: Ipv4Addr,
}
Ipv4Addr
实施 FromStr
but not From<&str>
which is the From
trait with &str
as a parameter. If you want to use FromStr
, specify parse(try_from_str)
or omit it since it's the default.
我想使用 clap derive API 来解析 Ipv4Addr
。
#![allow(unused)]
use clap; // 3.1.6
use clap::Parser;
use std::net::Ipv4Addr;
#[derive(Parser, Debug)]
#[clap(author, version, about, long_about = None)]
struct Args {
#[clap(short, long, parse(from_str))]
ip_dst: Ipv4Addr,
}
fn main() {
let args = Args::parse();
}
我的尝试给出了以下错误,即使 Ipv4Addr 似乎实现了提供 from_str
FromStr
error[E0277]: the trait bound `Ipv4Addr: From<&str>` is not satisfied
--> src/main.rs:10:31
|
10 | #[clap(short, long, parse(from_str))]
| ^^^^^^^^ the trait `From<&str>` is not implemented for `Ipv4Addr`
|
= help: the following implementations were found:
<Ipv4Addr as From<[u8; 4]>>
<Ipv4Addr as From<u32>>
For more information about this error, try `rustc --explain E0277`.
我的问题是:
- 为什么没有使用
FromStr
提供的方法? - 如何修复程序以执行我想要的操作?
你想要的是默认使用的(因为Ipv4Addr
实现了FromStr
),没有指定任何parse
选项:
use clap; // 3.1.6
use clap::Parser;
use std::net::Ipv4Addr;
#[derive(Parser, Debug)]
#[clap(author, version, about, long_about = None)]
struct Args {
#[clap(short, long)]
ip_dst: Ipv4Addr,
}
否则,您需要按照示例使用try_from_str
:
#![allow(unused)]
use clap; // 3.1.6
use clap::Parser;
use std::net::Ipv4Addr;
#[derive(Parser, Debug)]
#[clap(author, version, about, long_about = None)]
struct Args {
#[clap(short, long, parse(try_from_str))]
ip_dst: Ipv4Addr,
}
Ipv4Addr
实施 FromStr
but not From<&str>
which is the From
trait with &str
as a parameter. If you want to use FromStr
, specify parse(try_from_str)
or omit it since it's the default.