remove a few unnecessary allocations (#9176)

# Description

Change the parser a little bit so it does less allocations when it's
parsing, specifically when parsing lists/tables

# User-Facing Changes
<!-- List of all changes that impact the user experience here. This
helps us keep track of breaking changes. -->

# Tests + Formatting
<!--
Don't forget to add tests that cover your changes.

Make sure you've run and fixed any issues with these commands:

- `cargo fmt --all -- --check` to check standard code formatting (`cargo
fmt --all` applies these changes)
- `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A
clippy::needless_collect -A clippy::result_large_err` to check that
you're using the standard code style
- `cargo test --workspace` to check that all tests pass
- `cargo run -- crates/nu-std/tests/run.nu` to run the tests for the
standard library

> **Note**
> from `nushell` you can also use the `toolkit` as follows
> ```bash
> use toolkit.nu # or use an `env_change` hook to activate it
automatically
> toolkit check pr
> ```
-->

# After Submitting
<!-- If your PR had any user-facing changes, update [the
documentation](https://github.com/nushell/nushell.github.io) after the
PR is merged, if necessary. This will help us keep the docs up to date.
-->
This commit is contained in:
JT 2023-05-12 05:10:54 +02:00 committed by GitHub
parent 45c17d9664
commit a45bd0301a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -4006,11 +4006,8 @@ pub fn parse_table_expression(
} => { } => {
let mut table_headers = vec![]; let mut table_headers = vec![];
let headers = parse_value( let headers =
working_set, parse_list_expression(working_set, command.parts[0], &SyntaxShape::Any);
command.parts[0],
&SyntaxShape::List(Box::new(SyntaxShape::Any)),
);
if let Expression { if let Expression {
expr: Expr::List(headers), expr: Expr::List(headers),
@ -4028,11 +4025,8 @@ pub fn parse_table_expression(
} => { } => {
let mut rows = vec![]; let mut rows = vec![];
for part in &command.parts { for part in &command.parts {
let values = parse_value( let values =
working_set, parse_list_expression(working_set, *part, &SyntaxShape::Any);
*part,
&SyntaxShape::List(Box::new(SyntaxShape::Any)),
);
if let Expression { if let Expression {
expr: Expr::List(values), expr: Expr::List(values),
span, span,