Sitelet https://docs.rs/refeff/latest/refeff/struct.FileRunRequest.html
Skip to main content

FileRunRequest

Struct FileRunRequest 

Source
pub struct FileRunRequest {
    pub input: PathBuf,
    pub output: PathBuf,
    pub existing_output_policy: ExistingOutputPolicy,
}
Expand description

File-backed pipeline request.

Fields§

§input: PathBuf

Root feff.inp file.

§output: PathBuf

Directory that receives FEFF-compatible outputs.

§existing_output_policy: ExistingOutputPolicy

Existing-output policy.

Implementations§

Source§

impl FileRunRequest

Source

pub fn new(input: impl Into<PathBuf>, output: impl Into<PathBuf>) -> Self

Create a request using validated cache reuse.

Examples found in repository?
examples/spectrum.rs (line 8)
4fn main() -> Result<(), Box<dyn std::error::Error>> {
5    let mut args = std::env::args().skip(1);
6    let input = args.next().ok_or("provide input and output paths")?;
7    let output = args.next().ok_or("provide an output directory")?;
8    let report = Runner::new().run_files(FileRunRequest::new(input, &output))?;
9    let spectrum = io::xmu_dat::read_xmu_dat(std::path::Path::new(&output).join("xmu.dat"))?;
10    println!(
11        "{} completed stages; {} spectrum points",
12        report.stages.len(),
13        spectrum.photon_energy_ev.len()
14    );
15    if let Some(point) = spectrum.point(0) {
16        println!(
17            "First point: {} eV, μ={}",
18            point.photon_energy.value(),
19            point.mu
20        );
21    }
22    Ok(())
23}
More examples
Hide additional examples
examples/benchmark.rs (line 37)
4fn main() -> Result<(), Box<dyn std::error::Error>> {
5    let args: Vec<_> = std::env::args().skip(1).collect();
6    if args.len() != 4 {
7        return Err("expected INPUT OUTPUT MODE THREADS".into());
8    }
9    let input = PathBuf::from(&args[0]);
10    let output = PathBuf::from(&args[1]);
11    let threads: usize = args[3].parse()?;
12    let mut runner = Runner::new();
13    if let Some(n) = NonZeroUsize::new(threads) {
14        runner = runner.with_threads(n);
15    }
16    let start = Instant::now();
17    let (stages, bytes) = if args[2] == "memory" || args[2] == "typed" {
18        if args[2] == "typed" {
19            runner = runner.with_artifacts(ArtifactSelection::None);
20        }
21        let result = runner.run_in_memory(MemoryRunRequest::new(std::fs::read(input)?))?;
22        (
23            result.report.stages.len(),
24            result
25                .artifacts
26                .iter()
27                .map(|file| file.bytes.len() as u64)
28                .sum::<u64>(),
29        )
30    } else {
31        let policy = if args[2] == "recompute" {
32            ExistingOutputPolicy::Recompute
33        } else {
34            ExistingOutputPolicy::ReuseValidated
35        };
36        let report = runner
37            .run_files(FileRunRequest::new(input, &output).with_existing_output_policy(policy))?;
38        let bytes = report
39            .artifacts
40            .iter()
41            .map(|path| std::fs::metadata(output.join(path)).map(|m| m.len()))
42            .collect::<Result<Vec<_>, _>>()?
43            .into_iter()
44            .sum::<u64>();
45        (report.stages.len(), bytes)
46    };
47    println!(
48        "{{\"seconds\":{},\"stages\":{},\"artifact_bytes\":{}}}",
49        start.elapsed().as_secs_f64(),
50        stages,
51        bytes
52    );
53    Ok(())
54}
Source

pub const fn with_existing_output_policy( self, policy: ExistingOutputPolicy, ) -> Self

Select how existing output is handled.

Examples found in repository?
examples/benchmark.rs (line 37)
4fn main() -> Result<(), Box<dyn std::error::Error>> {
5    let args: Vec<_> = std::env::args().skip(1).collect();
6    if args.len() != 4 {
7        return Err("expected INPUT OUTPUT MODE THREADS".into());
8    }
9    let input = PathBuf::from(&args[0]);
10    let output = PathBuf::from(&args[1]);
11    let threads: usize = args[3].parse()?;
12    let mut runner = Runner::new();
13    if let Some(n) = NonZeroUsize::new(threads) {
14        runner = runner.with_threads(n);
15    }
16    let start = Instant::now();
17    let (stages, bytes) = if args[2] == "memory" || args[2] == "typed" {
18        if args[2] == "typed" {
19            runner = runner.with_artifacts(ArtifactSelection::None);
20        }
21        let result = runner.run_in_memory(MemoryRunRequest::new(std::fs::read(input)?))?;
22        (
23            result.report.stages.len(),
24            result
25                .artifacts
26                .iter()
27                .map(|file| file.bytes.len() as u64)
28                .sum::<u64>(),
29        )
30    } else {
31        let policy = if args[2] == "recompute" {
32            ExistingOutputPolicy::Recompute
33        } else {
34            ExistingOutputPolicy::ReuseValidated
35        };
36        let report = runner
37            .run_files(FileRunRequest::new(input, &output).with_existing_output_policy(policy))?;
38        let bytes = report
39            .artifacts
40            .iter()
41            .map(|path| std::fs::metadata(output.join(path)).map(|m| m.len()))
42            .collect::<Result<Vec<_>, _>>()?
43            .into_iter()
44            .sum::<u64>();
45        (report.stages.len(), bytes)
46    };
47    println!(
48        "{{\"seconds\":{},\"stages\":{},\"artifact_bytes\":{}}}",
49        start.elapsed().as_secs_f64(),
50        stages,
51        bytes
52    );
53    Ok(())
54}

Trait Implementations§

Source§

impl Clone for FileRunRequest

Source§

fn clone(&self) -> FileRunRequest

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for FileRunRequest

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Eq for FileRunRequest

Source§

impl PartialEq for FileRunRequest

Source§

fn eq(&self, other: &FileRunRequest) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for FileRunRequest

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> ByRef<T> for T

Source§

fn by_ref(&self) -> &T

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DistributionExt for T
where T: ?Sized,

Source§

fn rand<T>(&self, rng: &mut (impl Rng + ?Sized)) -> T
where Self: Distribution<T>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Imply<T> for U
where T: ?Sized, U: ?Sized,

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V