Shared variant of Dynamic type; All read/write access operations in Dynamic backed by Read/Write lock guards; new shared() script function

This commit is contained in:
Ilya Lakhin
2020-07-27 11:30:09 +07:00
parent 721c578407
commit e5fe222de3
11 changed files with 383 additions and 73 deletions

View File

@@ -228,7 +228,7 @@ def_package!(crate:MoreStringPackage:"Additional string utilities, including str
"pad",
&[TypeId::of::<ImmutableString>(), TypeId::of::<INT>(), TypeId::of::<char>()],
|_engine: &Engine, _: &Module, args: &mut [&mut Dynamic]| {
let len = *args[1].downcast_ref::< INT>().unwrap();
let len = *args[1].read_lock::< INT>().unwrap();
// Check if string will be over max size limit
#[cfg(not(feature = "unchecked"))]
@@ -243,7 +243,7 @@ def_package!(crate:MoreStringPackage:"Additional string utilities, including str
if len > 0 {
let ch = mem::take(args[2]).cast::<char>();
let s = args[0].downcast_mut::<ImmutableString>().unwrap();
let mut s = args[0].write_lock::<ImmutableString>().unwrap();
let orig_len = s.chars().count();