diff options
Diffstat (limited to 'src/backends')
-rw-r--r-- | src/backends/clang.rs | 7 | ||||
-rw-r--r-- | src/backends/python.rs | 18 |
2 files changed, 17 insertions, 8 deletions
diff --git a/src/backends/clang.rs b/src/backends/clang.rs index 11c316a..361c759 100644 --- a/src/backends/clang.rs +++ b/src/backends/clang.rs @@ -1,4 +1,4 @@ -use serde_derive::{ Serialize, Deserialize }; +use serde_derive::Deserialize; use crate::backends::{ Backend, mk_tmp_dir, RunError }; use std::path::{ Path, PathBuf }; use std::io::{ Result as IoResult, Error, ErrorKind }; @@ -7,9 +7,10 @@ use std::collections::hash_map::DefaultHasher; use std::hash::{ Hash, Hasher }; use crate::wait::{ ChildExitStatus, wait_child }; use std::time::Duration; +use crate::serde_duration::deserialize_duration; -#[derive(Debug, Serialize, Deserialize, Default)] +#[derive(Debug, Deserialize, Default)] pub struct ClangBackend { template: Option<String>, @@ -19,7 +20,7 @@ pub struct ClangBackend { #[serde(default = "default_cc")] cc: String, - #[serde(default = "default_timeout")] + #[serde(default = "default_timeout", deserialize_with = "deserialize_duration")] timeout: Duration } diff --git a/src/backends/python.rs b/src/backends/python.rs index 3ee7b35..7e0dac1 100644 --- a/src/backends/python.rs +++ b/src/backends/python.rs @@ -1,14 +1,23 @@ -use serde_derive::{ Serialize, Deserialize }; +use serde_derive::Deserialize; use crate::backends::{ Backend, RunError }; use std::process::{ Command }; use std::path::Path; use crate::wait::{ wait_child, ChildExitStatus }; +use crate::serde_duration::deserialize_duration; +use std::time::Duration; -#[derive(Debug, Serialize, Deserialize, Default)] +#[derive(Debug, Deserialize, Default)] pub struct PythonBackend { template: Option<String>, version: Option<String>, - timeout: Option<f32>, + + #[serde(default = "default_timeout", deserialize_with = "deserialize_duration")] + timeout: Duration, +} + + +fn default_timeout() -> Duration { + Duration::from_secs(1) } @@ -39,7 +48,6 @@ impl Backend for PythonBackend { .arg(fname.as_os_str()) .spawn()?; - let timeout = std::time::Duration::from_secs_f32(self.timeout.unwrap_or(1.0)); - Ok(wait_child(child, timeout, timer)?) + Ok(wait_child(child, self.timeout, timer)?) } }
\ No newline at end of file |