1use super::GetWithDefault;
2use std::net::{IpAddr, Ipv4Addr, Ipv6Addr};
3use structopt::StructOpt;
4
5#[derive(StructOpt, Debug, Clone)]
6pub struct HostV4Opt {
7 #[structopt(name = "hostv4", long = "host", short = "-H", global = true)]
9 host_addr: Option<Ipv4Addr>,
10}
11
12impl GetWithDefault for HostV4Opt {
13 type Item = Ipv4Addr;
14 fn get_with_default<T: Into<Self::Item>>(&self, default: T) -> Self::Item {
15 self.host_addr.unwrap_or_else(|| default.into())
16 }
17}
18
19#[derive(StructOpt, Debug, Clone)]
20pub struct HostV4Param {
21 #[structopt(name = "hostv4", long = "host", short = "-H")]
23 pub host_addr: Ipv4Addr,
24}
25
26#[derive(StructOpt, Debug, Clone)]
27pub struct HostV6Opt {
28 #[structopt(name = "hostv6", long = "host", short = "-H", global = true)]
30 host_addr: Option<Ipv6Addr>,
31}
32
33impl GetWithDefault for HostV6Opt {
34 type Item = Ipv6Addr;
35 fn get_with_default<T: Into<Self::Item>>(&self, default: T) -> Self::Item {
36 self.host_addr.unwrap_or_else(|| default.into())
37 }
38}
39
40#[derive(StructOpt, Debug, Clone)]
41pub struct HostV6Param {
42 #[structopt(name = "hostv6", long = "host", short = "-H")]
44 pub host_addr: Ipv6Addr,
45}
46
47#[derive(StructOpt, Debug, Clone)]
48pub struct HostOpt {
49 #[structopt(name = "host", long = "host", short = "-H", global = true)]
51 host_addr: Option<IpAddr>,
52}
53
54impl GetWithDefault for HostOpt {
55 type Item = IpAddr;
56 fn get_with_default<T: Into<Self::Item>>(&self, default: T) -> Self::Item {
57 self.host_addr.unwrap_or_else(|| default.into())
58 }
59}
60
61#[derive(StructOpt, Debug, Clone)]
62pub struct HostParam {
63 #[structopt(name = "host", long = "host", short = "-H")]
65 pub host_addr: IpAddr,
66}