Fix decimal and no_std builds.
This commit is contained in:
parent
77277ebf37
commit
58df3ca141
@ -1447,9 +1447,9 @@ impl Dynamic {
|
|||||||
/// Exported under the `decimal` feature only.
|
/// Exported under the `decimal` feature only.
|
||||||
#[cfg(feature = "decimal")]
|
#[cfg(feature = "decimal")]
|
||||||
#[inline(always)]
|
#[inline(always)]
|
||||||
pub fn as_decimal(self) -> Result<Decimal, &'static str> {
|
pub fn as_decimal(&self) -> Result<Decimal, &'static str> {
|
||||||
match self.0 {
|
match &self.0 {
|
||||||
Union::Decimal(n, _) => Ok(*n),
|
Union::Decimal(n, _) => Ok(**n),
|
||||||
#[cfg(not(feature = "no_closure"))]
|
#[cfg(not(feature = "no_closure"))]
|
||||||
Union::Shared(_, _) => self.read_lock().map(|v| *v).ok_or_else(|| self.type_name()),
|
Union::Shared(_, _) => self.read_lock().map(|v| *v).ok_or_else(|| self.type_name()),
|
||||||
_ => Err(self.type_name()),
|
_ => Err(self.type_name()),
|
||||||
|
@ -946,27 +946,32 @@ pub fn get_builtin_op_assignment_fn(
|
|||||||
match op {
|
match op {
|
||||||
"+=" => {
|
"+=" => {
|
||||||
return Some(|_, args| {
|
return Some(|_, args| {
|
||||||
Ok((*args[0].write_lock::<Decimal>().unwrap() += get_y(args)).into())
|
let y = get_y(args);
|
||||||
|
Ok((*args[0].write_lock::<Decimal>().unwrap() += y).into())
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
"-=" => {
|
"-=" => {
|
||||||
return Some(|_, args| {
|
return Some(|_, args| {
|
||||||
Ok((*args[0].write_lock::<Decimal>().unwrap() -= get_y(args)).into())
|
let y = get_y(args);
|
||||||
|
Ok((*args[0].write_lock::<Decimal>().unwrap() -= y).into())
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
"*=" => {
|
"*=" => {
|
||||||
return Some(|_, args| {
|
return Some(|_, args| {
|
||||||
Ok((*args[0].write_lock::<Decimal>().unwrap() *= get_y(args)).into())
|
let y = get_y(args);
|
||||||
|
Ok((*args[0].write_lock::<Decimal>().unwrap() *= y).into())
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
"/=" => {
|
"/=" => {
|
||||||
return Some(|_, args| {
|
return Some(|_, args| {
|
||||||
Ok((*args[0].write_lock::<Decimal>().unwrap() /= get_y(args)).into())
|
let y = get_y(args);
|
||||||
|
Ok((*args[0].write_lock::<Decimal>().unwrap() /= y).into())
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
"%=" => {
|
"%=" => {
|
||||||
return Some(|_, args| {
|
return Some(|_, args| {
|
||||||
Ok((*args[0].write_lock::<Decimal>().unwrap() %= get_y(args)).into())
|
let y = get_y(args);
|
||||||
|
Ok((*args[0].write_lock::<Decimal>().unwrap() %= y).into())
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
_ => return None,
|
_ => return None,
|
||||||
|
@ -88,7 +88,7 @@ mod token;
|
|||||||
mod r#unsafe;
|
mod r#unsafe;
|
||||||
mod utils;
|
mod utils;
|
||||||
|
|
||||||
pub type RhaiResult = Result<Dynamic, Box<EvalAltResult>>;
|
pub type RhaiResult = Result<Dynamic, stdlib::boxed::Box<EvalAltResult>>;
|
||||||
|
|
||||||
/// The system integer type. It is defined as [`i64`].
|
/// The system integer type. It is defined as [`i64`].
|
||||||
///
|
///
|
||||||
|
Loading…
Reference in New Issue
Block a user