Added support for Windows
This commit is contained in:
6
.github/workflows/build.yml
vendored
6
.github/workflows/build.yml
vendored
@@ -2,7 +2,11 @@ name: build
|
|||||||
on: [push, pull_request]
|
on: [push, pull_request]
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
runs-on: ubuntu-latest
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-latest, windows-latest]
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
with:
|
with:
|
||||||
|
|||||||
@@ -1,5 +1,9 @@
|
|||||||
## 0.2.0 (unreleased)
|
## 0.2.0 (unreleased)
|
||||||
|
|
||||||
|
- Added support for Windows
|
||||||
|
|
||||||
|
Breaking changes
|
||||||
|
|
||||||
- Changed pattern for fitting models - use `Model::params()` instead of `Model::new()`
|
- Changed pattern for fitting models - use `Model::params()` instead of `Model::new()`
|
||||||
- Changed `fit`, `fit_eval`, `cv`, `save`, and `load` to return `Result`
|
- Changed `fit`, `fit_eval`, `cv`, `save`, and `load` to return `Result`
|
||||||
- Changed `cv` to return average error
|
- Changed `cv` to return average error
|
||||||
|
|||||||
4
build.rs
4
build.rs
@@ -3,8 +3,8 @@ extern crate cc;
|
|||||||
fn main() {
|
fn main() {
|
||||||
cc::Build::new()
|
cc::Build::new()
|
||||||
.cpp(true)
|
.cpp(true)
|
||||||
.flag("-std=c++11")
|
.flag_if_supported("-std=c++11")
|
||||||
.flag("-Wno-unused-parameter")
|
.flag_if_supported("-Wno-unused-parameter")
|
||||||
.file("vendor/libmf/mf.cpp")
|
.file("vendor/libmf/mf.cpp")
|
||||||
.compile("mf");
|
.compile("mf");
|
||||||
}
|
}
|
||||||
|
|||||||
13
src/model.rs
13
src/model.rs
@@ -104,6 +104,7 @@ impl Drop for Model {
|
|||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use crate::{Error, Loss, Matrix, Model};
|
use crate::{Error, Loss, Matrix, Model};
|
||||||
|
use std::env;
|
||||||
|
|
||||||
fn generate_data() -> Matrix {
|
fn generate_data() -> Matrix {
|
||||||
let mut data = Matrix::new();
|
let mut data = Matrix::new();
|
||||||
@@ -156,8 +157,12 @@ mod tests {
|
|||||||
let data = generate_data();
|
let data = generate_data();
|
||||||
let model = Model::params().quiet(true).fit(&data).unwrap();
|
let model = Model::params().quiet(true).fit(&data).unwrap();
|
||||||
|
|
||||||
model.save("/tmp/model.txt").unwrap();
|
let mut path = env::temp_dir();
|
||||||
let model = Model::load("/tmp/model.txt").unwrap();
|
path.push("model.txt");
|
||||||
|
let path = path.to_str().unwrap();
|
||||||
|
|
||||||
|
model.save(path).unwrap();
|
||||||
|
let model = Model::load(path).unwrap();
|
||||||
|
|
||||||
model.p_factors();
|
model.p_factors();
|
||||||
model.q_factors();
|
model.q_factors();
|
||||||
@@ -168,13 +173,13 @@ mod tests {
|
|||||||
fn test_save_missing() {
|
fn test_save_missing() {
|
||||||
let data = generate_data();
|
let data = generate_data();
|
||||||
let model = Model::params().quiet(true).fit(&data).unwrap();
|
let model = Model::params().quiet(true).fit(&data).unwrap();
|
||||||
let result = model.save("/tmp/missing/model.txt");
|
let result = model.save("missing/model.txt");
|
||||||
assert_eq!(result.unwrap_err(), Error::Io);
|
assert_eq!(result.unwrap_err(), Error::Io);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_load_missing() {
|
fn test_load_missing() {
|
||||||
let result = Model::load("/tmp/missing.txt");
|
let result = Model::load("missing.txt");
|
||||||
assert_eq!(result.unwrap_err(), Error::Io);
|
assert_eq!(result.unwrap_err(), Error::Io);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user