From 3bf966df56a435a99e05e8802a85be16f42bf100 Mon Sep 17 00:00:00 2001 From: Arpit Bhadauria Date: Mon, 11 Dec 2023 20:47:36 +0000 Subject: [PATCH] remove from trait for NumOrStr --- src/uu/expr/src/syntax_tree.rs | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/uu/expr/src/syntax_tree.rs b/src/uu/expr/src/syntax_tree.rs index 820911cd3..7817b1721 100644 --- a/src/uu/expr/src/syntax_tree.rs +++ b/src/uu/expr/src/syntax_tree.rs @@ -219,15 +219,6 @@ impl From for NumOrStr { } } -impl From for Option { - fn from(s: NumOrStr) -> Self { - match s.eval_as_bigint() { - Ok(num) => num.to_usize(), - Err(_) => None, - } - } -} - impl NumOrStr { pub fn to_bigint(&self) -> Result { match self { @@ -300,8 +291,16 @@ impl AstNode { // // So we coerce errors into 0 to make that the only case we // have to care about. - let pos: usize = Option::::from(pos.eval()?).unwrap_or(0); - let length: usize = Option::::from(length.eval()?).unwrap_or(0); + let pos = pos + .eval()? + .eval_as_bigint() + .map_or(0.into(), |n| n.to_usize()) + .unwrap_or(0); + let length = length + .eval()? + .eval_as_bigint() + .map_or(0.into(), |n| n.to_usize()) + .unwrap_or(0); let (Some(pos), Some(_)) = (pos.checked_sub(1), length.checked_sub(1)) else { return Ok(String::new().into());