forked from extern/nushell
Replace &Span
with Span
since Span
is Copy
(#9770)
# Description `Span` is `Copy`, so we probably should not be passing references of `Span` around. This PR replaces all instances of `&Span` with `Span`, copying spans where necessary. # User-Facing Changes This alters some public functions to take `Span` instead of `&Span` as input. Namely, `EngineState::get_span_contents`, `nu_protocol::extract_value`, a bunch of the math commands, and `Gstat::gstat`.
This commit is contained in:
@ -12,9 +12,9 @@ fn from_value_to_delimited_string(
|
||||
) -> Result<String, ShellError> {
|
||||
match value {
|
||||
Value::Record { cols, vals, span } => {
|
||||
record_to_delimited(cols, vals, span, separator, config, head)
|
||||
record_to_delimited(cols, vals, *span, separator, config, head)
|
||||
}
|
||||
Value::List { vals, span } => table_to_delimited(vals, span, separator, config, head),
|
||||
Value::List { vals, span } => table_to_delimited(vals, *span, separator, config, head),
|
||||
// Propagate errors by explicitly matching them before the final case.
|
||||
Value::Error { error } => Err(*error.clone()),
|
||||
v => Err(make_unsupported_input_error(v, head, v.expect_span())),
|
||||
@ -24,7 +24,7 @@ fn from_value_to_delimited_string(
|
||||
fn record_to_delimited(
|
||||
cols: &[String],
|
||||
vals: &[Value],
|
||||
span: &Span,
|
||||
span: Span,
|
||||
separator: char,
|
||||
config: &Config,
|
||||
head: Span,
|
||||
@ -38,7 +38,7 @@ fn record_to_delimited(
|
||||
for (k, v) in cols.iter().zip(vals.iter()) {
|
||||
fields.push_back(k.clone());
|
||||
|
||||
values.push_back(to_string_tagged_value(v, config, head, *span)?);
|
||||
values.push_back(to_string_tagged_value(v, config, head, span)?);
|
||||
}
|
||||
|
||||
wtr.write_record(fields).expect("can not write.");
|
||||
@ -49,13 +49,13 @@ fn record_to_delimited(
|
||||
|
||||
fn table_to_delimited(
|
||||
vals: &Vec<Value>,
|
||||
span: &Span,
|
||||
span: Span,
|
||||
separator: char,
|
||||
config: &Config,
|
||||
head: Span,
|
||||
) -> Result<String, ShellError> {
|
||||
if let Some(val) = find_non_record(vals) {
|
||||
return Err(make_unsupported_input_error(val, head, *span));
|
||||
return Err(make_unsupported_input_error(val, head, span));
|
||||
}
|
||||
|
||||
let mut wtr = WriterBuilder::new()
|
||||
@ -68,7 +68,7 @@ fn table_to_delimited(
|
||||
let vals = vals
|
||||
.iter()
|
||||
.map(|ele| {
|
||||
to_string_tagged_value(ele, config, head, *span).unwrap_or_else(|_| String::new())
|
||||
to_string_tagged_value(ele, config, head, span).unwrap_or_else(|_| String::new())
|
||||
})
|
||||
.collect::<Vec<_>>();
|
||||
wtr.write_record(vals).expect("can not write");
|
||||
@ -80,7 +80,7 @@ fn table_to_delimited(
|
||||
let mut row = vec![];
|
||||
for desc in &merged_descriptors {
|
||||
row.push(match l.to_owned().get_data_by_key(desc) {
|
||||
Some(s) => to_string_tagged_value(&s, config, head, *span)?,
|
||||
Some(s) => to_string_tagged_value(&s, config, head, span)?,
|
||||
None => String::new(),
|
||||
});
|
||||
}
|
||||
@ -94,11 +94,11 @@ fn writer_to_string(writer: Writer<Vec<u8>>) -> Result<String, Box<dyn Error>> {
|
||||
Ok(String::from_utf8(writer.into_inner()?)?)
|
||||
}
|
||||
|
||||
fn make_conversion_error(type_from: &str, span: &Span) -> ShellError {
|
||||
fn make_conversion_error(type_from: &str, span: Span) -> ShellError {
|
||||
ShellError::CantConvert {
|
||||
to_type: type_from.to_string(),
|
||||
from_type: "string".to_string(),
|
||||
span: *span,
|
||||
span,
|
||||
help: None,
|
||||
}
|
||||
}
|
||||
|
@ -67,12 +67,12 @@ fn helper(engine_state: &EngineState, v: &Value) -> Result<toml::Value, ShellErr
|
||||
}
|
||||
Value::List { vals, .. } => toml::Value::Array(toml_list(engine_state, vals)?),
|
||||
Value::Block { span, .. } => {
|
||||
let code = engine_state.get_span_contents(span);
|
||||
let code = engine_state.get_span_contents(*span);
|
||||
let code = String::from_utf8_lossy(code).to_string();
|
||||
toml::Value::String(code)
|
||||
}
|
||||
Value::Closure { span, .. } => {
|
||||
let code = engine_state.get_span_contents(span);
|
||||
let code = engine_state.get_span_contents(*span);
|
||||
let code = String::from_utf8_lossy(code).to_string();
|
||||
toml::Value::String(code)
|
||||
}
|
||||
|
Reference in New Issue
Block a user