意思是将一个枚举里面变体存在值的使用进行匹配的一种模式,具体看一个例子就明白了,代码如下所示:#[derive(Debug)]enum Color { Red, Blue, Yellow, Rgba(Rgb),}#[derive(Debug)]enum Rgb { White, Pink,}fn match_color(color: Color) -> u32 { match color { Color::Red...
enum Shape { Point {x: i32, y: i32}, Rectangle {width: i32, height: i32}, Circle(i32), } fn main() { let point = Shape::Point{x: 66, y: 88}; let rect = Shape::Rectangle{width: 10, height: 20}; let circle = Shape::Circle(100); } 匹配枚举 使用match表达式,可以很方便地...
enumColor{Red,Orange,Yellow}letc1=Color::Red;match c1{Color::Red=>println!("Red"),Color::Orange=>println!("Orange"),Color::Yellow=>println!("Yellow")} match会执行模式匹配,在此示例中,模式就是出现在=>符号前面的部分,模式匹配可以和枚举协同工作,甚至可以测试它们包含的数据 模式类型 上面的例子...
这意味着编译器会检查我们的match表达式是否覆盖了所有可能的情况,确保没有遗漏。 如果某个match表达式没有穷尽性,编译器会给出警告,以防止出现潜在的错误。为了确保穷尽性,我们可以在match表达式的最后添加一个_,表示默认情况。 以下是一个示例,演示了穷尽性检查的用法: enumColor{ Red, Green, Blue, }fnmain() ...
这意味着编译器会检查我们的match表达式是否覆盖了所有可能的情况,确保没有遗漏。 如果某个match表达式没有穷尽性,编译器会给出警告,以防止出现潜在的错误。为了确保穷尽性,我们可以在match表达式的最后添加一个_,表示默认情况。 以下是一个示例,演示了穷尽性检查的用法: 代码语言:javascript 复制 enumColor{Red,...
(一)枚举与match(控制流运输符号) rust中有一个强大的控制流运算符:match,它允许将一个值与一些列模式进行匹配,并根据匹配的模式执行相关代码(关于rust的模式匹配,本文不深入,读者自行补充);而其中枚举是模式匹配中最为常用的: impl Message { fn call(&self) { ...
enumIpAddr{V4(String),V6(String), }fnmain() {lethome= IpAddr::V4(String::from("127.0.0.1"));letloopback= IpAddr::V6(String::from("::1")); } 我们直接将数据附加到了枚举的每个成员中,这样便不需要额外地使用结构体。另外一个使用枚举代替结构体的优势在于:每个成员可以拥有不同类型和数量的...
letbinary=matchboolean{false=>0,true=>1, }; println!("{} -> {}",boolean,binary); 这里不存在_ =>这个 match-arm。是由于 true 和 false这两个值已经全然覆盖boolean的全部值域。 枚举的样例 enum Message{Quit,ChangeColor(i32,i32,i32),Move{x:i32,y:i32},Write(String),}fn quit(){/*......
需要一些仅在具有Some(T)值时才运行的代码,并且允许该代码使用内部T。如果具有None值并且该代码没有T值可用的情况,match表达式是一个控制流构造,与enum一起使用时会执行此操作:它将运行不同的代码,具体取决于它具有enum的哪个变体,并且该代码可以使用匹配值内的数据。
当然,除了暴露函数这一基本操作之外,我们还可以暴露常量、对象、类、enum等等给到 JS 侧去调用,这些可以通过 napi-rs 的官方文档可以查阅到。 以Object 作为参数 而在JS 调用 Rust 编码中,最需要关注的是调用函数时,JS 侧给 Rust 传对象作为参数,这里为了提升性能,建议提前在 Rust 中定义好传递对象的数据结构,...