vowpalwabbit_sys/
lib.rs

1#![allow(non_upper_case_globals)]
2#![allow(non_camel_case_types)]
3#![allow(non_snake_case)]
4
5//! Rust bindings for the [VowpalWabbit](https://github.com/VowpalWabbit/vowpal_wabbit) C-binding surface.
6//!
7//! ### Example
8//! The following is an example for a basic usecase similar to command line driver mode. VW is initialized, an example run through the parser then prediction pipeline. Finally the example and VW object are finished.
9//! ```
10//! use std::ffi::CString;
11//!
12//! unsafe {
13//!   let command_line_str = CString::new("--quiet").unwrap();
14//!   let vw_handle = vowpalwabbit_sys::VW_InitializeA(command_line_str.as_ptr());
15//!   let example_str =
16//!     CString::new("1 | test example=1").unwrap();
17//!   let example_handle = vowpalwabbit_sys::VW_ReadExampleA(vw_handle, example_str.as_ptr());
18//!
19//!   vowpalwabbit_sys::VW_Predict(vw_handle, example_handle);
20//!   vowpalwabbit_sys::VW_Learn(vw_handle, example_handle);
21//!   vowpalwabbit_sys::VW_FinishExample(vw_handle, example_handle);
22//!   vowpalwabbit_sys::VW_Finish(vw_handle);
23//! }
24//! ```
25include!(concat!(env!("OUT_DIR"), "/bindings.rs"));
26
27#[cfg(test)]
28mod tests {
29    use super::*;
30    use std::ffi::CString;
31
32    #[test]
33    fn test_initialize_and_parse_learn_example() {
34        unsafe {
35            let command_line_str = CString::new("--quiet").unwrap();
36            let vw_handle = VW_InitializeA(command_line_str.as_ptr());
37            let example_str = CString::new("1 | test example=1").unwrap();
38            let example_handle = VW_ReadExampleA(vw_handle, example_str.as_ptr());
39            assert_eq!(VW_GetLabel(example_handle), 1.0);
40
41            VW_Predict(vw_handle, example_handle);
42            VW_Learn(vw_handle, example_handle);
43            VW_FinishExample(vw_handle, example_handle);
44            VW_Finish(vw_handle);
45        }
46    }
47}