用网站做数据库吗淄博微信网站制作
用网站做数据库吗,淄博微信网站制作,网站备案照片 多少钱,咸宁商城网站建设前言
rust 代码确实简介#xff0c;但是各种操作做层出不穷#xff0c;这里记录一下一些难以理解的晦涩语法。
正文
奇怪的省略值。
fn main() {let numbers (2, 4, 8, 16, 32);match numbers {(first, .., last) {println!(Some numbers: {}, {}, fir…前言
rust 代码确实简介但是各种操作做层出不穷这里记录一下一些难以理解的晦涩语法。
正文
奇怪的省略值。
fn main() {let numbers (2, 4, 8, 16, 32);match numbers {(first, .., last) {println!(Some numbers: {}, {}, first, last);},}
}…可以省略元组或者接头体的一些无关参数子啊这个元组中4.8.16 是我们不关注的所以可以省略匹配只匹配第一个和最后一个所以就拿到了2和16.
多层嵌套的match语法
?号的嵌套操作
其实更像是一个宏可以替换成
let f funx()?
//等价于
let f match funx() {Ok(data) data,Err(e) return Err(e),但是嵌套到循环中就比较让人疑惑的
fn divide(a: i32, b: i32) - ResultOptioni32, String {if b 0 {return Err(Division by zero.to_string());}Ok(Some(2))
}fn calculate(a: i32, b: i32) - Resulti32, String {let mut tmp 2;while let Some(i) divide(a, tmp)?{println!(: {:?}, i);tmp tmp -1}Ok(3)其实这里类似于一个loop循环只是加入了err强制返回操作
iter的神奇操作
//frame_data 类型是BTreeMap
let frame_data BTreeMap::new()frame_data.iter().skip_while(|(output_frameno, _)| {output_frameno self.output_frameno}).find(|(_, data)| data.is_some()).map(|(output_frameno, _)| output_frameno).ok_or(EncoderStatus::NeedMoreData)?; // TODO: doesnt play well with the below check?因为BTreeMap类型是k-v数据map。所以iter后会变成一种rust的元组类型无论在后面的各种操作都可以通过闭包来处理map是把k-v元组转换成k。
令人迷惑的into()
rust 是类型推断的并且类的函数可以在各种地方添加甚至可以让一个类无缘无故的拥有一些特性而into则是鲜明的例子。into代码如下
// From implies Into
#[stable(feature rust1, since 1.0.0)]
implT, U IntoU for T
whereU: FromT,
{/// Calls U::from(self).////// That is, this conversion is whatever the implementation of/// code[From]lt;Tgt; for U/code chooses to do.#[inline]fn into(self) - U {U::from(self)}
}// From (and thus Into) is reflexive
#[stable(feature rust1, since 1.0.0)]
implT FromT for T {/// Returns the argument unchanged.#[inline(always)]fn from(t: T) - T {t}
}这段代码是任何的T任何一个struct都可以调用都拥有了Into这个trait(内部有Into方法。只是这个方法的返回值必须实现From这个trait。通俗的说我想让结构体A。变成B我只用把B实现From这个trait。就可以直接调用A的into函数。 这种思考方式非常符合人类的思维模式但是却很不面向对象。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/89514.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!