Rust从入门到实战系列一百二十四:创建一个 Config 的构造函数

本文介绍了如何将命令行参数解析逻辑从`main`函数转移到`Config`结构体的`new`方法,以提高代码组织和一致性,使代码更符合标准库风格。
摘要由CSDN通过智能技术生成

目前为止,我们将负责解析命令行参数的逻辑从 main 提取到了 parse_config 函数中,这有助于我们看
清值 query 和 filename 是相互关联的并应该在代码中表现这种关系。接着我们增加了 Config 结构体来
描述 query 和 filename 的相关性,并能够从 parse_config 函数中将这些值的名称作为结构体字段名称
返回。
所以现在 parse_config 函数的目的是创建一个 Config 实例,我们可以将 parse_config 从一个普通函
数变为一个叫做 new 的与结构体关联的函数。做出这个改变使得代码更符合习惯:可以像标准库中的
String 调用 String:: new 来创建一个该类型的实例那样,将 parse_config 变为一个与 Config 关联的
new 函数。需要做出的修改:

use std::env;

use std::fs;

fn main() {
let args: Vec = env::args().collect();
let config = Config::new(&args);

println!(“Searching for {}”, config.query);

println!(“In file {}”, config.filename);

let contents = fs::read_to_string(config.filename)

.expect(“Something went wrong reading the file”);

println!(“With text:\n{}”, contents);

// --snip–
}
// --snip–

struct Config {

query: String,

filename: String,

}

impl Config {

fn new(args: &[String]) -> Config {
let query = args[1].clone();
let filename = args[2].clone();
Config { query, filename }
}
}
示例 12-7:将 parse_config 变为 Config::new
这里将 main 中调用 parse_config 的地方更新为调用 Config::new。我们将 parse_config 的名字改为
new 并将其移动到 impl 块中,这使得 new 函数与 Config 相关联。再次尝试编译并确保它可以工作。

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值