Changed save to return Result
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
## 0.2.0 (unreleased)
|
||||
|
||||
- Changed pattern for fitting models - use `Model::params()` instead of `Model::new()`
|
||||
- Changed `fit`, `fit_eval`, and `load` to return `Result`
|
||||
- Changed `fit`, `fit_eval`, `save`, and `load` to return `Result`
|
||||
|
||||
## 0.1.1 (2021-07-27)
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@ model.bias();
|
||||
Save the model to a file
|
||||
|
||||
```rust
|
||||
model.save("model.txt");
|
||||
model.save("model.txt").unwrap();
|
||||
```
|
||||
|
||||
Load the model from a file
|
||||
|
||||
19
src/model.rs
19
src/model.rs
@@ -25,9 +25,14 @@ impl Model {
|
||||
unsafe { mf_predict(self.model, row_index, column_index) }
|
||||
}
|
||||
|
||||
pub fn save(&self, path: &str) {
|
||||
pub fn save(&self, path: &str) -> Result<(), Error> {
|
||||
let cpath = CString::new(path).expect("CString::new failed");
|
||||
unsafe { mf_save_model(self.model, cpath.as_ptr()); }
|
||||
let status = unsafe { mf_save_model(self.model, cpath.as_ptr()) };
|
||||
if status != 0 {
|
||||
Err(Error("Cannot save model".to_string()))
|
||||
} else {
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
pub fn rows(&self) -> i32 {
|
||||
@@ -137,7 +142,7 @@ mod tests {
|
||||
let data = generate_data();
|
||||
let model = Model::params().quiet(true).fit(&data).unwrap();
|
||||
|
||||
model.save("/tmp/model.txt");
|
||||
model.save("/tmp/model.txt").unwrap();
|
||||
let model = Model::load("/tmp/model.txt").unwrap();
|
||||
|
||||
model.p_factors();
|
||||
@@ -145,6 +150,14 @@ mod tests {
|
||||
model.bias();
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_save_missing() {
|
||||
let data = generate_data();
|
||||
let model = Model::params().quiet(true).fit(&data).unwrap();
|
||||
let result = model.save("/tmp/missing/model.txt");
|
||||
assert!(result.is_err());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_load_missing() {
|
||||
let result = Model::load("/tmp/missing.txt");
|
||||
|
||||
Reference in New Issue
Block a user