當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Rust debug_assert_matches用法及代碼示例


本文簡要介紹rust語言中 Macro core::assert_matches::debug_assert_matches 的用法。

用法

pub macro debug_assert_matches($($arg : tt) *) {
    ...
}

斷言一個表達式匹配任何給定的模式。

就像在match 表達式中一樣,該模式可以選擇性地後跟if 和一個可以訪問由該模式綁定的名稱的保護表達式。

Panics時,此宏將打印表達式的值及其調試表示。

assert_matches! 不同,默認情況下 debug_assert_matches! 語句僅在非優化構建中啟用。除非將 -C debug-assertions 傳遞給編譯器,否則優化的構建將不會執行 debug_assert_matches! 語句。這使得debug_assert_matches! 對於那些成本太高而無法在發布版本中出現但在開發過程中可能會有所幫助的檢查很有用。擴展debug_assert_matches! 的結果總是類型檢查。

例子

#![feature(assert_matches)]

use std::assert_matches::debug_assert_matches;

let a = 1u32.checked_add(2);
let b = 1u32.checked_sub(2);
debug_assert_matches!(a, Some(_));
debug_assert_matches!(b, None);

let c = Ok("abc".to_string());
debug_assert_matches!(c, Ok(x) | Err(x) if x.len() < 100);

相關用法


注:本文由純淨天空篩選整理自rust-lang.org大神的英文原創作品 Macro core::assert_matches::debug_assert_matches。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。