1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
mod includes;

pub mod device;
pub mod error;
pub mod memory;
pub mod ptr;
pub mod stream;

/// Convenience macro for turning a CUDA error code into a `std::result::Result`.
///
/// # Usage
///
/// There are two possible uses of the macro:
///
/// (1) Shorthand to return `Ok(something)` or a CUDA error:
///
/// ```ignore
/// result!(code, return_value);
/// ```
///
/// (2) Shorthand to return `Ok(())` or a CUDA error:
///
/// ```ignore
/// result!(code)
/// ```
macro_rules! result {
    ($code:expr, $ok:expr) => {
        if $code == 0 {
            Ok($ok)
        } else {
            Err($crate::error::Error::Cuda($code))
        }
    };
    ($code:expr) => {
        result!($code, ())
    };
}

use result;