如何模式匹配结构中的字符串与文字

时间:2016-04-16 06:29:48

标签: string struct rust match

在下面的代码中,我发现Book { @property (strong,nonatomic) NSString *bookId; @property (strong,nonatomic) NSString *bookStatus; @property (strong,nonatomic) NSString *bookName; } Book * book =[Book alloc]init]; [book setValue:@"textbook" forKey:@"bookName"]; //not working book.bookStatus=@"textbook" //not working [book setbookStatus:@"textbook"]; //not working } 中的代码具有一定的优雅。我想用类似的公式写一个match_num_works()匹配,但不能让它工作。我最终得到的String不那么优雅。

match_text_works()

2 个答案:

答案 0 :(得分:5)

它可能不是“优雅”或更好......但一个选项是将条件移动到匹配表达式中:

match foo_text {
    &FooText { ref text } if text == "pattern" => (),
    _ => ()
}

Working sample: Playpen link

答案 1 :(得分:0)

请注意,您所需的模式实际上适用于&str。您无法直接模式匹配String,因为它是一个包含未公开内部缓冲区的更复杂的值。

struct FooText<'a> {
    text: &'a str,
    _other: u32,
}

fn main() {
    let foo = FooText { text: "foo", _other: 5 };
    match foo {
        FooText { text: "foo", .. } => println!("Match!"),
        _ => println!("No match"),
    }
}

Playground