Add error handling to custom measure functions
1use criterion::{criterion_group, criterion_main, Criterion};
2
3fn stretch_benchmarks(c: &mut Criterion) {
4 c.bench_function("deep hierarchy", |b| {
5 b.iter(|| {
6 stretch::compute(
7 &stretch::style::Node {
8 children: vec![
9 stretch::style::Node {
10 children: vec![
11 stretch::style::Node {
12 children: vec![
13 stretch::style::Node {
14 size: stretch::geometry::Size {
15 width: stretch::style::Dimension::Points(10.0),
16 height: stretch::style::Dimension::Points(10.0),
17 },
18 ..Default::default()
19 },
20 stretch::style::Node {
21 size: stretch::geometry::Size {
22 width: stretch::style::Dimension::Points(10.0),
23 height: stretch::style::Dimension::Points(10.0),
24 },
25 ..Default::default()
26 },
27 ],
28 ..Default::default()
29 },
30 stretch::style::Node {
31 children: vec![
32 stretch::style::Node {
33 size: stretch::geometry::Size {
34 width: stretch::style::Dimension::Points(10.0),
35 height: stretch::style::Dimension::Points(10.0),
36 },
37 ..Default::default()
38 },
39 stretch::style::Node {
40 size: stretch::geometry::Size {
41 width: stretch::style::Dimension::Points(10.0),
42 height: stretch::style::Dimension::Points(10.0),
43 },
44 ..Default::default()
45 },
46 ],
47 ..Default::default()
48 },
49 ],
50
51 ..Default::default()
52 },
53 stretch::style::Node {
54 children: vec![
55 stretch::style::Node {
56 children: vec![
57 stretch::style::Node {
58 size: stretch::geometry::Size {
59 width: stretch::style::Dimension::Points(10.0),
60 height: stretch::style::Dimension::Points(10.0),
61 },
62 ..Default::default()
63 },
64 stretch::style::Node {
65 size: stretch::geometry::Size {
66 width: stretch::style::Dimension::Points(10.0),
67 height: stretch::style::Dimension::Points(10.0),
68 },
69 ..Default::default()
70 },
71 ],
72 ..Default::default()
73 },
74 stretch::style::Node {
75 children: vec![
76 stretch::style::Node {
77 size: stretch::geometry::Size {
78 width: stretch::style::Dimension::Points(10.0),
79 height: stretch::style::Dimension::Points(10.0),
80 },
81 ..Default::default()
82 },
83 stretch::style::Node {
84 size: stretch::geometry::Size {
85 width: stretch::style::Dimension::Points(10.0),
86 height: stretch::style::Dimension::Points(10.0),
87 },
88 ..Default::default()
89 },
90 ],
91 ..Default::default()
92 },
93 ],
94 ..Default::default()
95 },
96 ],
97
98 ..Default::default()
99 },
100 stretch::geometry::Size::undefined(),
101 )
102 .unwrap()
103 })
104 });
105}
106
107criterion_group!(benches, stretch_benchmarks);
108criterion_main!(benches);