1 个不稳定版本
使用旧的 Rust 2015
0.0.1 | 2015年3月19日 |
---|
#74 在 #flexible
5KB
57 行
expect
为类型添加断言的灵活库。
示例
extern crate expect;
use std::default::Default;
use expect::{Expect, Assertion};
#[derive(Default)]
struct Point {
x: f64,
y: f64
}
// Clockwise from the top left.
#[derive(Default)]
struct Square(Point, Point, Point, Point);
#[derive(Default)]
struct Contains(Point);
impl Assertion<Square> for Contains {
fn assert(self, square: &Square) {
assert!(self.0.x > square.0.x && self.0.x < self.1.x
&& self.0.y > square.2.y && self.1.y < self.1.y);
}
}
fn main() {
let square = Square(
Point { x: 0.0, y: 1.0 },
Point { x: 1.0, y: 1.0 },
Point { x: 1.0, y: 0.0 },
Point { x: 0.0, y: 0.0 },
);
square
.expect(Contains(Point { x: 0.5, y: 0.18 }))
.expect(Contains(Point { x: 0.12, y: 0.9 }))
// You can also use tuples of Assertions.
.expect((Contains(Point { x: 0.63, y: 0.4 }),
Contains(Point { x: 0.7, y: 0.85 })));
}
请注意,尽管这个示例是一个单独的文件/包,但使用 Assertion
和 expect
的真正强大之处在于 Assertion
可以在单独的包中定义。
用法
使用 crates.io 仓库;将其添加到您的 Cargo.toml
中,与其他依赖项一起
[dependencies]
expect = "*"
作者
Jonathan Reem 是 expect 的主要作者和维护者。
许可证
MIT