编辑回复: 👍 给你置顶了
作者回复: 👍 谢谢提醒!我倒没有关注国内需要镜像的问题。
作者回复: 对,这里表达有错误。let 的确是一个 statement。见:https://doc.rust-lang.org/reference/statements.html。我想更着重表达的是,很多语言的 while loop,for loop,if else 都是语句,但 Rust 下它们是表达式,它们会返回最后一个表达式的值(即便是 unit)。我忽视了 let/static/const/fn 这样的定义,它们是纯粹的语句。回头我改一下。
作者回复: 我会在讲所有权的时候介绍 Copy/Clone,敬请期待。
作者回复: 👍 非常棒
作者回复: 赞!
作者回复: 使用了 StructOpt,👍 可以考虑为 url 加上: #[structopt(..., parse(try_from_str = parse_url)], 验证一下。
编辑回复: 没事放轻松,今天先把代码跑起来就行,之后都会慢慢讲到的。之前咱们学习都是先学语法,再写程序。试试课程这个新玩法啊,啥也别说就是写,先直观感受一波,之后再一点一点抽丝剥茧😁
作者回复: 👍 把实现放入 impl Config {} 是个不错的优化。
作者回复: 1. 函数作为参数是说 a, b 为函数,这样调用:a(1, b),把一个函数指针传给 b 作为参数。 2. #[derive(Debug)] 这里会自动生成一些代码,这些代码实现了 Debug trait。 3. println! 是一个宏,用 ! 是把它和普通函数区分开。因为 println 需要支持可变参数,Rust 不支持可变参数,所以这里用宏实现。