use &str not String for process_func_str

This commit is contained in:
Simon Gardling 2022-03-22 09:20:57 -04:00
parent 3388bf4c6d
commit 7a309fdd00
2 changed files with 4 additions and 4 deletions

View File

@ -481,7 +481,7 @@ impl MathApp {
ui.text_edit_singleline(&mut self.func_strs[i]); ui.text_edit_singleline(&mut self.func_strs[i]);
}); });
let proc_func_str = process_func_str(self.func_strs[i].clone()); let proc_func_str = process_func_str(&self.func_strs[i]);
if configs_changed if configs_changed
| integral_toggle | derivative_toggle | integral_toggle | derivative_toggle
| (proc_func_str != function.get_func_str()) | (proc_func_str != function.get_func_str())

View File

@ -68,7 +68,7 @@ EXTREMELY Janky function that tries to put asterisks in the proper places to be
One limitation though, variables with multiple characters like `pi` cannot be multiplied (like `pipipipi` won't result in `pi*pi*pi*pi`). But that's such a niche use case (and that same thing could be done by using exponents) that it doesn't really matter. One limitation though, variables with multiple characters like `pi` cannot be multiplied (like `pipipipi` won't result in `pi*pi*pi*pi`). But that's such a niche use case (and that same thing could be done by using exponents) that it doesn't really matter.
In the future I may want to completely rewrite this or implement this natively in exmex. In the future I may want to completely rewrite this or implement this natively in exmex.
*/ */
pub fn process_func_str(function_in: String) -> String { pub fn process_func_str(function_in: &str) -> String {
let function = function_in.replace("log10(", "log(").replace("pi", "π"); // pi -> π and log10 -> log let function = function_in.replace("log10(", "log(").replace("pi", "π"); // pi -> π and log10 -> log
let function_chars: Vec<char> = function.chars().collect(); let function_chars: Vec<char> = function.chars().collect();
let mut output_string: String = String::new(); let mut output_string: String = String::new();
@ -186,7 +186,7 @@ pub fn test_func(function_string: &str) -> Option<String> {
/// `test_func` /// `test_func`
#[cfg(test)] #[cfg(test)]
fn test_func_helper(function_string: &str) -> Option<String> { fn test_func_helper(function_string: &str) -> Option<String> {
test_func(&process_func_str(function_string.to_string())) test_func(&process_func_str(function_string))
} }
/// Tests to make sure functions are parsed correctly /// Tests to make sure functions are parsed correctly
@ -210,7 +210,7 @@ fn test_func_test() {
/// Helps with tests of `process_func_str` /// Helps with tests of `process_func_str`
#[cfg(test)] #[cfg(test)]
fn test_process_helper(input: &str, expected: &str) { fn test_process_helper(input: &str, expected: &str) {
assert_eq!(&process_func_str(input.to_string()), expected); assert_eq!(&process_func_str(input), expected);
} }
/// Tests to make sure my cursed function works as intended /// Tests to make sure my cursed function works as intended