Fixup AsRef<str> vs &str.
This commit is contained in:
@@ -105,7 +105,7 @@ impl Drop for ArgBackup<'_> {
|
||||
#[cfg(not(feature = "no_closure"))]
|
||||
#[inline]
|
||||
pub fn ensure_no_data_race(
|
||||
fn_name: impl AsRef<str>,
|
||||
fn_name: &str,
|
||||
args: &FnCallArgs,
|
||||
is_method_call: bool,
|
||||
) -> RhaiResultOf<()> {
|
||||
@@ -116,7 +116,7 @@ pub fn ensure_no_data_race(
|
||||
.find(|(_, a)| a.is_locked())
|
||||
{
|
||||
return Err(ERR::ErrorDataRace(
|
||||
format!("argument #{} of function '{}'", n + 1, fn_name.as_ref()),
|
||||
format!("argument #{} of function '{}'", n + 1, fn_name),
|
||||
Position::NONE,
|
||||
)
|
||||
.into());
|
||||
@@ -150,7 +150,7 @@ impl Engine {
|
||||
fn gen_call_signature(
|
||||
&self,
|
||||
namespace: Option<&Namespace>,
|
||||
fn_name: impl AsRef<str>,
|
||||
fn_name: &str,
|
||||
args: &[&mut Dynamic],
|
||||
) -> String {
|
||||
format!(
|
||||
@@ -161,7 +161,7 @@ impl Engine {
|
||||
} else {
|
||||
""
|
||||
},
|
||||
fn_name.as_ref(),
|
||||
fn_name,
|
||||
args.iter()
|
||||
.map(|a| if a.is::<ImmutableString>() {
|
||||
"&str | ImmutableString | String"
|
||||
@@ -187,7 +187,7 @@ impl Engine {
|
||||
global: &GlobalRuntimeState,
|
||||
state: &'s mut EvalState,
|
||||
lib: &[&Module],
|
||||
fn_name: impl AsRef<str>,
|
||||
fn_name: &str,
|
||||
hash_script: u64,
|
||||
args: Option<&mut FnCallArgs>,
|
||||
allow_dynamic: bool,
|
||||
@@ -197,8 +197,6 @@ impl Engine {
|
||||
return None;
|
||||
}
|
||||
|
||||
let fn_name = fn_name.as_ref();
|
||||
|
||||
let mut hash = args.as_ref().map_or(hash_script, |args| {
|
||||
combine_hashes(
|
||||
hash_script,
|
||||
@@ -332,7 +330,7 @@ impl Engine {
|
||||
global: &mut GlobalRuntimeState,
|
||||
state: &mut EvalState,
|
||||
lib: &[&Module],
|
||||
name: impl AsRef<str>,
|
||||
name: &str,
|
||||
hash: u64,
|
||||
args: &mut FnCallArgs,
|
||||
is_ref_mut: bool,
|
||||
@@ -342,7 +340,6 @@ impl Engine {
|
||||
#[cfg(not(feature = "unchecked"))]
|
||||
self.inc_operations(&mut global.num_operations, pos)?;
|
||||
|
||||
let name = name.as_ref();
|
||||
let parent_source = global.source.clone();
|
||||
|
||||
// Check if function access already in the cache
|
||||
@@ -521,7 +518,7 @@ impl Engine {
|
||||
global: &mut GlobalRuntimeState,
|
||||
state: &mut EvalState,
|
||||
lib: &[&Module],
|
||||
fn_name: impl AsRef<str>,
|
||||
fn_name: &str,
|
||||
hashes: FnCallHashes,
|
||||
args: &mut FnCallArgs,
|
||||
is_ref_mut: bool,
|
||||
@@ -535,8 +532,6 @@ impl Engine {
|
||||
Err(ERR::ErrorRuntime(msg.into(), pos).into())
|
||||
}
|
||||
|
||||
let fn_name = fn_name.as_ref();
|
||||
|
||||
// Check for data race.
|
||||
#[cfg(not(feature = "no_closure"))]
|
||||
ensure_no_data_race(fn_name, args, is_ref_mut)?;
|
||||
@@ -717,14 +712,13 @@ impl Engine {
|
||||
global: &mut GlobalRuntimeState,
|
||||
state: &mut EvalState,
|
||||
lib: &[&Module],
|
||||
fn_name: impl AsRef<str>,
|
||||
fn_name: &str,
|
||||
mut hash: FnCallHashes,
|
||||
target: &mut crate::engine::Target,
|
||||
(call_args, call_arg_pos): &mut (FnArgsVec<Dynamic>, Position),
|
||||
pos: Position,
|
||||
level: usize,
|
||||
) -> RhaiResultOf<(Dynamic, bool)> {
|
||||
let fn_name = fn_name.as_ref();
|
||||
let is_ref_mut = target.is_ref();
|
||||
|
||||
let (result, updated) = match fn_name {
|
||||
@@ -902,7 +896,7 @@ impl Engine {
|
||||
state: &mut EvalState,
|
||||
lib: &[&Module],
|
||||
this_ptr: &mut Option<&mut Dynamic>,
|
||||
fn_name: impl AsRef<str>,
|
||||
fn_name: &str,
|
||||
args_expr: &[Expr],
|
||||
constants: &[Dynamic],
|
||||
hashes: FnCallHashes,
|
||||
@@ -910,7 +904,6 @@ impl Engine {
|
||||
capture_scope: bool,
|
||||
level: usize,
|
||||
) -> RhaiResult {
|
||||
let fn_name = fn_name.as_ref();
|
||||
let mut a_expr = args_expr;
|
||||
let mut total_args = a_expr.len();
|
||||
let mut curry = FnArgsVec::new_const();
|
||||
@@ -1179,14 +1172,13 @@ impl Engine {
|
||||
lib: &[&Module],
|
||||
this_ptr: &mut Option<&mut Dynamic>,
|
||||
namespace: &Namespace,
|
||||
fn_name: impl AsRef<str>,
|
||||
fn_name: &str,
|
||||
args_expr: &[Expr],
|
||||
constants: &[Dynamic],
|
||||
hash: u64,
|
||||
pos: Position,
|
||||
level: usize,
|
||||
) -> RhaiResult {
|
||||
let fn_name = fn_name.as_ref();
|
||||
let mut arg_values = FnArgsVec::with_capacity(args_expr.len());
|
||||
let mut args = FnArgsVec::with_capacity(args_expr.len());
|
||||
let mut first_arg_value = None;
|
||||
@@ -1324,14 +1316,17 @@ impl Engine {
|
||||
global: &mut GlobalRuntimeState,
|
||||
state: &mut EvalState,
|
||||
lib: &[&Module],
|
||||
script: impl AsRef<str>,
|
||||
_pos: Position,
|
||||
script: &str,
|
||||
pos: Position,
|
||||
level: usize,
|
||||
) -> RhaiResult {
|
||||
let _pos = pos;
|
||||
|
||||
#[cfg(not(feature = "unchecked"))]
|
||||
self.inc_operations(&mut global.num_operations, _pos)?;
|
||||
|
||||
let script = script.as_ref().trim();
|
||||
let script = script.trim();
|
||||
|
||||
if script.is_empty() {
|
||||
return Ok(Dynamic::UNIT);
|
||||
}
|
||||
|
@@ -87,10 +87,7 @@ pub fn get_hasher() -> ahash::AHasher {
|
||||
/// The first module name is skipped. Hashing starts from the _second_ module in the chain.
|
||||
#[inline]
|
||||
#[must_use]
|
||||
pub fn calc_qualified_var_hash<'a>(
|
||||
modules: impl Iterator<Item = impl AsRef<str> + 'a>,
|
||||
var_name: impl AsRef<str>,
|
||||
) -> u64 {
|
||||
pub fn calc_qualified_var_hash<'a>(modules: impl Iterator<Item = &'a str>, var_name: &str) -> u64 {
|
||||
let s = &mut get_hasher();
|
||||
|
||||
// We always skip the first module
|
||||
@@ -98,9 +95,9 @@ pub fn calc_qualified_var_hash<'a>(
|
||||
modules
|
||||
.inspect(|_| len += 1)
|
||||
.skip(1)
|
||||
.for_each(|m| m.as_ref().hash(s));
|
||||
.for_each(|m| m.hash(s));
|
||||
len.hash(s);
|
||||
var_name.as_ref().hash(s);
|
||||
var_name.hash(s);
|
||||
|
||||
match s.finish() {
|
||||
0 => ALT_ZERO_HASH,
|
||||
@@ -123,9 +120,9 @@ pub fn calc_qualified_var_hash<'a>(
|
||||
/// The first module name is skipped. Hashing starts from the _second_ module in the chain.
|
||||
#[inline]
|
||||
#[must_use]
|
||||
pub fn calc_qualified_fn_hash(
|
||||
modules: impl Iterator<Item = impl AsRef<str>>,
|
||||
fn_name: impl AsRef<str>,
|
||||
pub fn calc_qualified_fn_hash<'a>(
|
||||
modules: impl Iterator<Item = &'a str>,
|
||||
fn_name: &str,
|
||||
num: usize,
|
||||
) -> u64 {
|
||||
let s = &mut get_hasher();
|
||||
@@ -135,9 +132,9 @@ pub fn calc_qualified_fn_hash(
|
||||
modules
|
||||
.inspect(|_| len += 1)
|
||||
.skip(1)
|
||||
.for_each(|m| m.as_ref().hash(s));
|
||||
.for_each(|m| m.hash(s));
|
||||
len.hash(s);
|
||||
fn_name.as_ref().hash(s);
|
||||
fn_name.hash(s);
|
||||
num.hash(s);
|
||||
|
||||
match s.finish() {
|
||||
@@ -156,8 +153,8 @@ pub fn calc_qualified_fn_hash(
|
||||
/// If the hash happens to be zero, it is mapped to `DEFAULT_HASH`.
|
||||
#[inline(always)]
|
||||
#[must_use]
|
||||
pub fn calc_fn_hash(fn_name: impl AsRef<str>, num: usize) -> u64 {
|
||||
calc_qualified_fn_hash(empty::<&str>(), fn_name, num)
|
||||
pub fn calc_fn_hash(fn_name: &str, num: usize) -> u64 {
|
||||
calc_qualified_fn_hash(empty(), fn_name, num)
|
||||
}
|
||||
|
||||
/// Calculate a non-zero [`u64`] hash key from a list of parameter types.
|
||||
|
@@ -287,15 +287,16 @@ impl<'a> NativeCallContext<'a> {
|
||||
args: &mut [&mut Dynamic],
|
||||
) -> RhaiResult {
|
||||
let fn_name = fn_name.as_ref();
|
||||
let len = args.len();
|
||||
|
||||
let hash = if is_method_call {
|
||||
FnCallHashes::from_all(
|
||||
#[cfg(not(feature = "no_function"))]
|
||||
calc_fn_hash(fn_name, args.len() - 1),
|
||||
calc_fn_hash(fn_name, args.len()),
|
||||
calc_fn_hash(fn_name, len - 1),
|
||||
calc_fn_hash(fn_name, len),
|
||||
)
|
||||
} else {
|
||||
calc_fn_hash(fn_name, args.len()).into()
|
||||
calc_fn_hash(fn_name, len).into()
|
||||
};
|
||||
|
||||
self.engine()
|
||||
|
Reference in New Issue
Block a user