[2024-12-16] Changing to mod
syntax in Rust
This commit is contained in:
parent
6a4e818144
commit
c47dd577f5
174
src/lib.rs
174
src/lib.rs
@ -1,92 +1,90 @@
|
|||||||
use pyo3::prelude::*;
|
use pyo3::prelude::*;
|
||||||
use std::time::Instant;
|
|
||||||
use pyo3::exceptions::PyException;
|
|
||||||
|
|
||||||
#[pyclass]
|
|
||||||
#[derive(Clone)]
|
|
||||||
struct Results {
|
|
||||||
#[pyo3(get)]
|
|
||||||
nanos: u128,
|
|
||||||
#[pyo3(get)]
|
|
||||||
micros: u128,
|
|
||||||
#[pyo3(get)]
|
|
||||||
millis: u128,
|
|
||||||
#[pyo3(get)]
|
|
||||||
seconds: f64,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[pyclass(module = "tictoc", name = "init")]
|
|
||||||
struct Init {
|
|
||||||
time: Instant,
|
|
||||||
#[pyo3(get)]
|
|
||||||
results: Results,
|
|
||||||
status: bool,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[pymethods]
|
|
||||||
impl Init {
|
|
||||||
#[new]
|
|
||||||
fn new() -> Self {
|
|
||||||
let res = Results {
|
|
||||||
nanos: 0,
|
|
||||||
micros: 0,
|
|
||||||
millis: 0,
|
|
||||||
seconds: 0.0,
|
|
||||||
};
|
|
||||||
Init {
|
|
||||||
time: Instant::now(),
|
|
||||||
results: res,
|
|
||||||
status: false,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn tic(&mut self) {
|
|
||||||
self.time = Instant::now();
|
|
||||||
self.status = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
fn toc(&mut self) -> PyResult<()> {
|
|
||||||
if self.status == false {
|
|
||||||
Err(PyException::new_err("tic() must be called before toc()"))
|
|
||||||
} else {
|
|
||||||
let elapsed_time = self.time.elapsed();
|
|
||||||
self.results = Results {
|
|
||||||
nanos: elapsed_time.as_nanos(),
|
|
||||||
micros: elapsed_time.as_micros(),
|
|
||||||
millis: elapsed_time.as_millis(),
|
|
||||||
seconds: elapsed_time.as_secs_f64(),
|
|
||||||
};
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[pymodule]
|
#[pymodule]
|
||||||
fn tictoc(_py: Python<'_>, m: &PyModule) -> PyResult<()> {
|
mod tictoc {
|
||||||
m.add_class::<Init>()?;
|
use super::*;
|
||||||
Ok(())
|
use std::time::Instant;
|
||||||
}
|
use pyo3::exceptions::PyException;
|
||||||
|
|
||||||
#[test]
|
#[pyclass]
|
||||||
fn test_new() {
|
#[derive(Clone)]
|
||||||
let init = Init::new();
|
struct Results {
|
||||||
assert_eq!(init.results.nanos,0);
|
#[pyo3(get)]
|
||||||
}
|
nanos: u128,
|
||||||
|
#[pyo3(get)]
|
||||||
#[test]
|
micros: u128,
|
||||||
fn test_tic() {
|
#[pyo3(get)]
|
||||||
let mut init = Init::new();
|
millis: u128,
|
||||||
let time1 = init.time;
|
#[pyo3(get)]
|
||||||
init.tic();
|
seconds: f64,
|
||||||
let time2 = init.time;
|
}
|
||||||
assert!(time2 > time1)
|
|
||||||
}
|
#[pyclass(name = "init")]
|
||||||
|
pub struct Init {
|
||||||
#[test]
|
time: Instant,
|
||||||
fn test_toc() {
|
#[pyo3(get)]
|
||||||
let mut init = Init::new();
|
results: Results,
|
||||||
init.tic();
|
status: bool,
|
||||||
println!("{}","test");
|
}
|
||||||
let _ = init.toc();
|
|
||||||
assert!(init.results.nanos > 0)
|
#[pymethods]
|
||||||
|
impl Init {
|
||||||
|
#[new]
|
||||||
|
fn new() -> Self {
|
||||||
|
let res = Results {
|
||||||
|
nanos: 0,
|
||||||
|
micros: 0,
|
||||||
|
millis: 0,
|
||||||
|
seconds: 0.0,
|
||||||
|
};
|
||||||
|
Init {
|
||||||
|
time: Instant::now(),
|
||||||
|
results: res,
|
||||||
|
status: false,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn tic(&mut self) {
|
||||||
|
self.time = Instant::now();
|
||||||
|
self.status = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
fn toc(&mut self) -> PyResult<()> {
|
||||||
|
if self.status == false {
|
||||||
|
Err(PyException::new_err("tic() must be called before toc()"))
|
||||||
|
} else {
|
||||||
|
let elapsed_time = self.time.elapsed();
|
||||||
|
self.results = Results {
|
||||||
|
nanos: elapsed_time.as_nanos(),
|
||||||
|
micros: elapsed_time.as_micros(),
|
||||||
|
millis: elapsed_time.as_millis(),
|
||||||
|
seconds: elapsed_time.as_secs_f64(),
|
||||||
|
};
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#[test]
|
||||||
|
fn test_new() {
|
||||||
|
let init = Init::new();
|
||||||
|
assert_eq!(init.results.nanos,0);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_tic() {
|
||||||
|
let mut init = Init::new();
|
||||||
|
let time1 = init.time;
|
||||||
|
init.tic();
|
||||||
|
let time2 = init.time;
|
||||||
|
assert!(time2 > time1)
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_toc() {
|
||||||
|
let mut init = Init::new();
|
||||||
|
init.tic();
|
||||||
|
println!("{}","test");
|
||||||
|
let _ = init.toc();
|
||||||
|
assert!(init.results.nanos > 0)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user