opensrdk_symbolic_computation/expression/transcendental_expression/
variable.rs

1use crate::TranscendentalExpression;
2use std::collections::HashSet;
3
4impl TranscendentalExpression {
5    pub fn variable_ids(&self) -> HashSet<&str> {
6        match self {
7            TranscendentalExpression::Abs(arg) => arg.variable_ids(),
8            TranscendentalExpression::Pow(base, exponential) => base
9                .variable_ids()
10                .into_iter()
11                .chain(exponential.variable_ids().into_iter())
12                .collect(),
13            TranscendentalExpression::Exp(arg) => arg.variable_ids(),
14            TranscendentalExpression::Log(l, antilogarithm) => l
15                .variable_ids()
16                .into_iter()
17                .chain(antilogarithm.variable_ids().into_iter())
18                .collect(),
19            TranscendentalExpression::Ln(arg) => arg.variable_ids(),
20            TranscendentalExpression::Sin(arg) => arg.variable_ids(),
21            TranscendentalExpression::Cos(arg) => arg.variable_ids(),
22            TranscendentalExpression::Tan(arg) => arg.variable_ids(),
23        }
24    }
25}