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}