refactor(data): use explicit string views for compact numeric names
This commit is contained in:
@@ -4390,9 +4390,9 @@ fn normalize_factor_snapshots(
|
||||
});
|
||||
}
|
||||
let already_normalized = snapshot.extra_factors.iter().all(|(field, value)| {
|
||||
let trimmed = field.as_ref().trim().trim_matches('"').trim_matches('\'');
|
||||
let trimmed = field.as_str().trim().trim_matches('"').trim_matches('\'');
|
||||
!trimmed.is_empty()
|
||||
&& trimmed == field.as_ref()
|
||||
&& trimmed == field.as_str()
|
||||
&& trimmed.bytes().all(|byte| !byte.is_ascii_uppercase())
|
||||
&& value.is_finite()
|
||||
});
|
||||
@@ -4403,10 +4403,10 @@ fn normalize_factor_snapshots(
|
||||
.extra_factors
|
||||
.into_iter()
|
||||
.filter_map(|(field, value)| {
|
||||
let trimmed = field.as_ref().trim().trim_matches('"').trim_matches('\'');
|
||||
let trimmed = field.as_str().trim().trim_matches('"').trim_matches('\'');
|
||||
if trimmed.is_empty() || !value.is_finite() {
|
||||
None
|
||||
} else if trimmed == field.as_ref()
|
||||
} else if trimmed == field.as_str()
|
||||
&& trimmed.bytes().all(|byte| !byte.is_ascii_uppercase())
|
||||
{
|
||||
Some((field, value))
|
||||
|
||||
@@ -40,14 +40,14 @@ impl NumericFactorMap {
|
||||
|
||||
pub fn get(&self, key: &str) -> Option<&f64> {
|
||||
self.entries
|
||||
.binary_search_by(|(name, _)| name.as_ref().cmp(key))
|
||||
.binary_search_by(|(name, _)| name.as_str().cmp(key))
|
||||
.ok()
|
||||
.map(|index| &self.entries[index].1)
|
||||
}
|
||||
|
||||
pub fn get_mut(&mut self, key: &str) -> Option<&mut f64> {
|
||||
self.entries
|
||||
.binary_search_by(|(name, _)| name.as_ref().cmp(key))
|
||||
.binary_search_by(|(name, _)| name.as_str().cmp(key))
|
||||
.ok()
|
||||
.map(|index| &mut self.entries[index].1)
|
||||
}
|
||||
@@ -64,14 +64,14 @@ impl NumericFactorMap {
|
||||
if self
|
||||
.entries
|
||||
.last()
|
||||
.is_none_or(|(last, _)| last.as_ref() < key.as_ref())
|
||||
.is_none_or(|(last, _)| last.as_str() < key.as_str())
|
||||
{
|
||||
self.entries.push((key, value));
|
||||
return None;
|
||||
}
|
||||
match self
|
||||
.entries
|
||||
.binary_search_by(|(name, _)| name.as_ref().cmp(key.as_ref()))
|
||||
.binary_search_by(|(name, _)| name.as_str().cmp(key.as_str()))
|
||||
{
|
||||
Ok(index) => Some(std::mem::replace(&mut self.entries[index].1, value)),
|
||||
Err(index) => {
|
||||
@@ -83,7 +83,7 @@ impl NumericFactorMap {
|
||||
|
||||
pub fn remove(&mut self, key: &str) -> Option<f64> {
|
||||
self.entries
|
||||
.binary_search_by(|(name, _)| name.as_ref().cmp(key))
|
||||
.binary_search_by(|(name, _)| name.as_str().cmp(key))
|
||||
.ok()
|
||||
.map(|index| self.entries.remove(index).1)
|
||||
}
|
||||
|
||||
@@ -4905,7 +4905,7 @@ impl PlatformExprStrategy {
|
||||
.iter()
|
||||
.filter(|(field, _)| {
|
||||
self.stock_extra_factor_map_required
|
||||
|| self.stock_extra_factor_identifiers.contains(field.as_ref())
|
||||
|| self.stock_extra_factor_identifiers.contains(field.as_str())
|
||||
})
|
||||
.map(|(field, value)| (field.clone(), *value))
|
||||
.collect()
|
||||
@@ -5653,7 +5653,7 @@ impl PlatformExprStrategy {
|
||||
Dynamic::from(stock.stock_volume_ma100),
|
||||
);
|
||||
for (key, value) in &stock.extra_factors {
|
||||
factors.insert(key.as_ref().into(), Dynamic::from(*value));
|
||||
factors.insert(key.as_str().into(), Dynamic::from(*value));
|
||||
}
|
||||
for (key, value) in &stock.extra_text_factors {
|
||||
factors.insert(key.clone().into(), Dynamic::from(value.clone()));
|
||||
@@ -17561,7 +17561,7 @@ mod tests {
|
||||
assert_eq!(copied_state.extra_factors["negative_zero"].to_bits(), (-0.0_f64).to_bits());
|
||||
assert!(copied_state.extra_factors["undefined_value"].is_nan());
|
||||
let exposed = copied_state.extra_factors.iter()
|
||||
.map(|(key, value)| (key.as_ref().into(), Dynamic::from(*value)))
|
||||
.map(|(key, value)| (key.as_str().into(), Dynamic::from(*value)))
|
||||
.collect::<Map>();
|
||||
assert_eq!(exposed["negative_zero"].as_float().unwrap().to_bits(), (-0.0_f64).to_bits());
|
||||
assert!(exposed["undefined_value"].as_float().unwrap().is_nan());
|
||||
|
||||
Reference in New Issue
Block a user