1// Copyright 2014-2017 The html5ever Project Developers. See the
2// COPYRIGHT file at the top-level directory of this distribution.
3//
4// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
5// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
6// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
7// option. This file may not be copied, modified, or distributed
8// except according to those terms.
9
10macro_rules! unwrap_or_else {
11 ($opt:expr, $else_block:block) => {
12 match $opt {
13 None => $else_block,
14 Some(x) => x,
15 }
16 };
17}
18
19macro_rules! unwrap_or_return {
20 ($opt:expr, $retval:expr) => {
21 unwrap_or_else!($opt, { return $retval })
22 };
23}
24
25macro_rules! time {
26 ($e:expr) => {{
27 let now = ::std::time::Instant::now();
28 let result = $e;
29 let d = now.elapsed();
30 let dt = d.as_secs() * 1_000_000_000 + u64::from(d.subsec_nanos());
31 (result, dt)
32 }};
33}
34