computation_types/
function.rs1use crate::{ComputationFn, NamedArgs};
2
3#[derive(Clone, Copy, Debug)]
4pub struct Function<ArgNames, Body> {
5 pub name: Option<&'static str>,
6 pub arg_names: ArgNames,
7 pub body: Body,
8}
9
10impl<ArgNames, Body> Function<ArgNames, Body> {
11 pub fn anonymous(arg_names: ArgNames, body: Body) -> Self {
12 Self {
13 name: None,
14 arg_names,
15 body,
16 }
17 }
18
19 pub fn named(name: &'static str, arg_names: ArgNames, body: Body) -> Self {
20 Self {
21 name: Some(name),
22 arg_names,
23 body,
24 }
25 }
26
27 pub fn fill<Args>(self, args: Args) -> Body::Filled
28 where
29 (ArgNames, Args): Into<NamedArgs>,
30 Body: ComputationFn,
31 {
32 self.body.fill((self.arg_names, args).into())
33 }
34}