rustgym_testcpp/
lib.rs

1pub static mut VERSION: i32 = 0;
2
3#[no_mangle]
4extern "C" fn isBadVersion(version: i32) -> bool {
5    unsafe { version >= VERSION }
6}
7
8#[repr(C)]
9pub struct BinaryMatrix {
10    get: fn(&BinaryMatrix, i32, i32) -> i32,
11    dimensions: fn(&BinaryMatrix) -> *const i32,
12    data: Vec<Vec<i32>>,
13}
14
15impl BinaryMatrix {
16    pub fn new(data: Vec<Vec<i32>>) -> Self {
17        fn dimensions(matrix: &BinaryMatrix) -> *const i32 {
18            [matrix.data.len() as i32, matrix.data[0].len() as i32].as_ptr()
19        }
20        fn get(matrix: &BinaryMatrix, i: i32, j: i32) -> i32 {
21            matrix.data[i as usize][j as usize]
22        }
23
24        BinaryMatrix {
25            data,
26            dimensions,
27            get,
28        }
29    }
30}
31
32extern "C" {
33    pub fn firstBadVersion(version: i32) -> i32;
34
35    #[allow(improper_ctypes)]
36    pub fn leftMostColumnWithOne(matrix: &BinaryMatrix) -> i32;
37}