mirror of
https://github.com/nushell/nushell
synced 2024-12-25 12:33:17 +00:00
Changes HashMap to use aHash instead, giving a performance boost. (#9391)
# Description see https://github.com/nushell/nushell/issues/9390 using `ahash` instead of the default hasher. this will not affect compile time as we where already building `ahash`. # 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:
parent
e605d8007c
commit
1433f4a520
69 changed files with 124 additions and 93 deletions
14
Cargo.lock
generated
14
Cargo.lock
generated
|
@ -2666,6 +2666,7 @@ dependencies = [
|
||||||
name = "nu-cli"
|
name = "nu-cli"
|
||||||
version = "0.81.1"
|
version = "0.81.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"ahash 0.8.3",
|
||||||
"atty",
|
"atty",
|
||||||
"chrono",
|
"chrono",
|
||||||
"crossterm 0.26.1",
|
"crossterm 0.26.1",
|
||||||
|
@ -2695,6 +2696,7 @@ dependencies = [
|
||||||
name = "nu-cmd-dataframe"
|
name = "nu-cmd-dataframe"
|
||||||
version = "0.81.1"
|
version = "0.81.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"ahash 0.8.3",
|
||||||
"chrono",
|
"chrono",
|
||||||
"fancy-regex",
|
"fancy-regex",
|
||||||
"indexmap",
|
"indexmap",
|
||||||
|
@ -2713,6 +2715,7 @@ dependencies = [
|
||||||
name = "nu-cmd-extra"
|
name = "nu-cmd-extra"
|
||||||
version = "0.81.1"
|
version = "0.81.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"ahash 0.8.3",
|
||||||
"nu-cmd-lang",
|
"nu-cmd-lang",
|
||||||
"nu-engine",
|
"nu-engine",
|
||||||
"nu-parser",
|
"nu-parser",
|
||||||
|
@ -2725,6 +2728,7 @@ dependencies = [
|
||||||
name = "nu-cmd-lang"
|
name = "nu-cmd-lang"
|
||||||
version = "0.81.1"
|
version = "0.81.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"ahash 0.8.3",
|
||||||
"fancy-regex",
|
"fancy-regex",
|
||||||
"itertools",
|
"itertools",
|
||||||
"nu-ansi-term",
|
"nu-ansi-term",
|
||||||
|
@ -2740,6 +2744,7 @@ dependencies = [
|
||||||
name = "nu-color-config"
|
name = "nu-color-config"
|
||||||
version = "0.81.1"
|
version = "0.81.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"ahash 0.8.3",
|
||||||
"nu-ansi-term",
|
"nu-ansi-term",
|
||||||
"nu-engine",
|
"nu-engine",
|
||||||
"nu-json",
|
"nu-json",
|
||||||
|
@ -2754,6 +2759,7 @@ name = "nu-command"
|
||||||
version = "0.81.1"
|
version = "0.81.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"Inflector",
|
"Inflector",
|
||||||
|
"ahash 0.8.3",
|
||||||
"alphanumeric-sort",
|
"alphanumeric-sort",
|
||||||
"atty",
|
"atty",
|
||||||
"base64 0.21.2",
|
"base64 0.21.2",
|
||||||
|
@ -2856,6 +2862,7 @@ dependencies = [
|
||||||
name = "nu-engine"
|
name = "nu-engine"
|
||||||
version = "0.81.1"
|
version = "0.81.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"ahash 0.8.3",
|
||||||
"nu-glob",
|
"nu-glob",
|
||||||
"nu-path",
|
"nu-path",
|
||||||
"nu-protocol",
|
"nu-protocol",
|
||||||
|
@ -2867,6 +2874,7 @@ dependencies = [
|
||||||
name = "nu-explore"
|
name = "nu-explore"
|
||||||
version = "0.81.1"
|
version = "0.81.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"ahash 0.8.3",
|
||||||
"ansi-str",
|
"ansi-str",
|
||||||
"crossterm 0.26.1",
|
"crossterm 0.26.1",
|
||||||
"lscolors",
|
"lscolors",
|
||||||
|
@ -2903,6 +2911,7 @@ dependencies = [
|
||||||
name = "nu-parser"
|
name = "nu-parser"
|
||||||
version = "0.81.1"
|
version = "0.81.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"ahash 0.8.3",
|
||||||
"bytesize",
|
"bytesize",
|
||||||
"chrono",
|
"chrono",
|
||||||
"itertools",
|
"itertools",
|
||||||
|
@ -2928,6 +2937,7 @@ dependencies = [
|
||||||
name = "nu-plugin"
|
name = "nu-plugin"
|
||||||
version = "0.81.1"
|
version = "0.81.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"ahash 0.8.3",
|
||||||
"bincode",
|
"bincode",
|
||||||
"nu-engine",
|
"nu-engine",
|
||||||
"nu-protocol",
|
"nu-protocol",
|
||||||
|
@ -2949,6 +2959,7 @@ dependencies = [
|
||||||
name = "nu-protocol"
|
name = "nu-protocol"
|
||||||
version = "0.81.1"
|
version = "0.81.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"ahash 0.8.3",
|
||||||
"byte-unit",
|
"byte-unit",
|
||||||
"chrono",
|
"chrono",
|
||||||
"chrono-humanize",
|
"chrono-humanize",
|
||||||
|
@ -2981,6 +2992,7 @@ dependencies = [
|
||||||
name = "nu-system"
|
name = "nu-system"
|
||||||
version = "0.81.1"
|
version = "0.81.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"ahash 0.8.3",
|
||||||
"atty",
|
"atty",
|
||||||
"chrono",
|
"chrono",
|
||||||
"libc",
|
"libc",
|
||||||
|
@ -2998,6 +3010,7 @@ dependencies = [
|
||||||
name = "nu-table"
|
name = "nu-table"
|
||||||
version = "0.81.1"
|
version = "0.81.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"ahash 0.8.3",
|
||||||
"nu-ansi-term",
|
"nu-ansi-term",
|
||||||
"nu-color-config",
|
"nu-color-config",
|
||||||
"nu-engine",
|
"nu-engine",
|
||||||
|
@ -3092,6 +3105,7 @@ dependencies = [
|
||||||
name = "nu_plugin_query"
|
name = "nu_plugin_query"
|
||||||
version = "0.81.1"
|
version = "0.81.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"ahash 0.8.3",
|
||||||
"gjson",
|
"gjson",
|
||||||
"nu-engine",
|
"nu-engine",
|
||||||
"nu-plugin",
|
"nu-plugin",
|
||||||
|
|
|
@ -37,6 +37,7 @@ once_cell = "1.17"
|
||||||
percent-encoding = "2"
|
percent-encoding = "2"
|
||||||
sysinfo = "0.29"
|
sysinfo = "0.29"
|
||||||
unicode-segmentation = "1.10"
|
unicode-segmentation = "1.10"
|
||||||
|
ahash = "0.8.3"
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
plugin = []
|
plugin = []
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
use crate::completions::{Completer, CompletionOptions, MatchAlgorithm, SortBy};
|
use crate::completions::{Completer, CompletionOptions, MatchAlgorithm, SortBy};
|
||||||
|
use ahash::{HashMap, HashMapExt};
|
||||||
use nu_engine::eval_call;
|
use nu_engine::eval_call;
|
||||||
use nu_protocol::{
|
use nu_protocol::{
|
||||||
ast::{Argument, Call, Expr, Expression},
|
ast::{Argument, Call, Expr, Expression},
|
||||||
|
@ -6,7 +7,7 @@ use nu_protocol::{
|
||||||
PipelineData, Span, Type, Value,
|
PipelineData, Span, Type, Value,
|
||||||
};
|
};
|
||||||
use reedline::Suggestion;
|
use reedline::Suggestion;
|
||||||
use std::{collections::HashMap, sync::Arc};
|
use std::sync::Arc;
|
||||||
|
|
||||||
use super::completer::map_value_completions;
|
use super::completer::map_value_completions;
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,7 @@ indexmap = { version = "1.7", features = ["serde-1"] }
|
||||||
num = { version = "0.4", optional = true }
|
num = { version = "0.4", optional = true }
|
||||||
serde = { version = "1.0", features = ["derive"] }
|
serde = { version = "1.0", features = ["derive"] }
|
||||||
sqlparser = { version = "0.33", features = ["serde"], optional = true }
|
sqlparser = { version = "0.33", features = ["serde"], optional = true }
|
||||||
|
ahash = "0.8.3"
|
||||||
|
|
||||||
[dependencies.polars]
|
[dependencies.polars]
|
||||||
features = [
|
features = [
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
use crate::dataframe::eager::sql_expr::parse_sql_expr;
|
use crate::dataframe::eager::sql_expr::parse_sql_expr;
|
||||||
|
use ahash::{HashMap, HashMapExt};
|
||||||
use polars::error::{ErrString, PolarsError};
|
use polars::error::{ErrString, PolarsError};
|
||||||
use polars::prelude::{col, DataFrame, DataType, IntoLazy, LazyFrame};
|
use polars::prelude::{col, DataFrame, DataType, IntoLazy, LazyFrame};
|
||||||
use sqlparser::ast::{
|
use sqlparser::ast::{
|
||||||
|
@ -6,7 +7,6 @@ use sqlparser::ast::{
|
||||||
};
|
};
|
||||||
use sqlparser::dialect::GenericDialect;
|
use sqlparser::dialect::GenericDialect;
|
||||||
use sqlparser::parser::Parser;
|
use sqlparser::parser::Parser;
|
||||||
use std::collections::HashMap;
|
|
||||||
|
|
||||||
#[derive(Default)]
|
#[derive(Default)]
|
||||||
pub struct SQLContext {
|
pub struct SQLContext {
|
||||||
|
|
|
@ -20,6 +20,7 @@ nu-protocol = { path = "../nu-protocol", version = "0.81.1" }
|
||||||
|
|
||||||
# Potential dependencies for extras
|
# Potential dependencies for extras
|
||||||
num-traits = "0.2"
|
num-traits = "0.2"
|
||||||
|
ahash = "0.8.3"
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
extra = ["default"]
|
extra = ["default"]
|
||||||
|
|
|
@ -15,11 +15,11 @@ mod test_examples {
|
||||||
check_example_input_and_output_types_match_command_signature,
|
check_example_input_and_output_types_match_command_signature,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
use ahash::{HashSet, HashSetExt};
|
||||||
use nu_protocol::{
|
use nu_protocol::{
|
||||||
engine::{Command, EngineState, StateWorkingSet},
|
engine::{Command, EngineState, StateWorkingSet},
|
||||||
Type,
|
Type,
|
||||||
};
|
};
|
||||||
use std::collections::HashSet;
|
|
||||||
|
|
||||||
pub fn test_examples(cmd: impl Command + 'static) {
|
pub fn test_examples(cmd: impl Command + 'static) {
|
||||||
let examples = cmd.examples();
|
let examples = cmd.examples();
|
||||||
|
|
|
@ -22,6 +22,7 @@ nu-ansi-term = "0.47.0"
|
||||||
fancy-regex = "0.11"
|
fancy-regex = "0.11"
|
||||||
itertools = "0.10"
|
itertools = "0.10"
|
||||||
shadow-rs = { version = "0.22", default-features = false }
|
shadow-rs = { version = "0.22", default-features = false }
|
||||||
|
ahash = "0.8.3"
|
||||||
|
|
||||||
[build-dependencies]
|
[build-dependencies]
|
||||||
shadow-rs = { version = "0.22", default-features = false }
|
shadow-rs = { version = "0.22", default-features = false }
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
|
use ahash::{HashSet, HashSetExt};
|
||||||
use itertools::Itertools;
|
use itertools::Itertools;
|
||||||
use nu_protocol::{
|
use nu_protocol::{
|
||||||
ast::Block,
|
ast::Block,
|
||||||
engine::{EngineState, Stack, StateDelta, StateWorkingSet},
|
engine::{EngineState, Stack, StateDelta, StateWorkingSet},
|
||||||
Example, PipelineData, Signature, Span, Type, Value,
|
Example, PipelineData, Signature, Span, Type, Value,
|
||||||
};
|
};
|
||||||
use std::collections::HashSet;
|
|
||||||
|
|
||||||
pub fn check_example_input_and_output_types_match_command_signature(
|
pub fn check_example_input_and_output_types_match_command_signature(
|
||||||
example: &Example,
|
example: &Example,
|
||||||
|
|
|
@ -16,11 +16,11 @@ mod test_examples {
|
||||||
use crate::{
|
use crate::{
|
||||||
Break, Collect, Def, Describe, Echo, ExportCommand, ExportDef, If, Let, Module, Mut, Use,
|
Break, Collect, Def, Describe, Echo, ExportCommand, ExportDef, If, Let, Module, Mut, Use,
|
||||||
};
|
};
|
||||||
|
use ahash::{HashSet, HashSetExt};
|
||||||
use nu_protocol::{
|
use nu_protocol::{
|
||||||
engine::{Command, EngineState, StateWorkingSet},
|
engine::{Command, EngineState, StateWorkingSet},
|
||||||
Type, Value,
|
Type, Value,
|
||||||
};
|
};
|
||||||
use std::collections::HashSet;
|
|
||||||
|
|
||||||
pub fn test_examples(cmd: impl Command + 'static) {
|
pub fn test_examples(cmd: impl Command + 'static) {
|
||||||
let examples = cmd.examples();
|
let examples = cmd.examples();
|
||||||
|
|
|
@ -18,6 +18,7 @@ nu-engine = { path = "../nu-engine", version = "0.81.1" }
|
||||||
nu-json = { path="../nu-json", version = "0.81.1" }
|
nu-json = { path="../nu-json", version = "0.81.1" }
|
||||||
|
|
||||||
serde = { version="1.0", features=["derive"] }
|
serde = { version="1.0", features=["derive"] }
|
||||||
|
ahash = "0.8.3"
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
nu-test-support = { path="../nu-test-support", version = "0.81.1" }
|
nu-test-support = { path="../nu-test-support", version = "0.81.1" }
|
||||||
|
|
|
@ -2,9 +2,9 @@ use crate::{
|
||||||
nu_style::{color_from_hex, lookup_style},
|
nu_style::{color_from_hex, lookup_style},
|
||||||
parse_nustyle, NuStyle,
|
parse_nustyle, NuStyle,
|
||||||
};
|
};
|
||||||
|
use ahash::{HashMap, HashMapExt};
|
||||||
use nu_ansi_term::Style;
|
use nu_ansi_term::Style;
|
||||||
use nu_protocol::Value;
|
use nu_protocol::Value;
|
||||||
use std::collections::HashMap;
|
|
||||||
|
|
||||||
pub fn lookup_ansi_color_style(s: &str) -> Style {
|
pub fn lookup_ansi_color_style(s: &str) -> Style {
|
||||||
if s.starts_with('#') {
|
if s.starts_with('#') {
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
use crate::text_style::Alignment;
|
use crate::text_style::Alignment;
|
||||||
use crate::{color_record_to_nustyle, lookup_ansi_color_style, TextStyle};
|
use crate::{color_record_to_nustyle, lookup_ansi_color_style, TextStyle};
|
||||||
|
use ahash::HashMap;
|
||||||
use nu_ansi_term::{Color, Style};
|
use nu_ansi_term::{Color, Style};
|
||||||
use nu_engine::{env::get_config, eval_block};
|
use nu_engine::{env::get_config, eval_block};
|
||||||
use nu_protocol::{
|
use nu_protocol::{
|
||||||
|
@ -7,10 +8,7 @@ use nu_protocol::{
|
||||||
CliError, IntoPipelineData, Value,
|
CliError, IntoPipelineData, Value,
|
||||||
};
|
};
|
||||||
|
|
||||||
use std::{
|
use std::fmt::{Debug, Formatter, Result};
|
||||||
collections::HashMap,
|
|
||||||
fmt::{Debug, Formatter, Result},
|
|
||||||
};
|
|
||||||
|
|
||||||
// ComputableStyle represents the valid user style types: a single color value, or a closure which
|
// ComputableStyle represents the valid user style types: a single color value, or a closure which
|
||||||
// takes an input value and produces a color value. The latter represents a value which
|
// takes an input value and produces a color value. The latter represents a value which
|
||||||
|
@ -142,7 +140,7 @@ impl<'a> StyleComputer<'a> {
|
||||||
|
|
||||||
// Create the hashmap
|
// Create the hashmap
|
||||||
#[rustfmt::skip]
|
#[rustfmt::skip]
|
||||||
let mut map: StyleMapping = HashMap::from([
|
let mut map: StyleMapping = [
|
||||||
("separator".to_string(), ComputableStyle::Static(Color::White.normal())),
|
("separator".to_string(), ComputableStyle::Static(Color::White.normal())),
|
||||||
("leading_trailing_space_bg".to_string(), ComputableStyle::Static(Style::default().on(Color::Rgb(128, 128, 128)))),
|
("leading_trailing_space_bg".to_string(), ComputableStyle::Static(Style::default().on(Color::Rgb(128, 128, 128)))),
|
||||||
("header".to_string(), ComputableStyle::Static(Color::White.normal())),
|
("header".to_string(), ComputableStyle::Static(Color::White.normal())),
|
||||||
|
@ -164,7 +162,7 @@ impl<'a> StyleComputer<'a> {
|
||||||
("block".to_string(), ComputableStyle::Static(Color::White.normal())),
|
("block".to_string(), ComputableStyle::Static(Color::White.normal())),
|
||||||
("hints".to_string(), ComputableStyle::Static(Color::DarkGray.normal())),
|
("hints".to_string(), ComputableStyle::Static(Color::DarkGray.normal())),
|
||||||
("search_result".to_string(), ComputableStyle::Static(Color::White.normal().on(Color::Red))),
|
("search_result".to_string(), ComputableStyle::Static(Color::White.normal().on(Color::Red))),
|
||||||
]);
|
].into_iter().collect();
|
||||||
|
|
||||||
for (key, value) in &config.color_config {
|
for (key, value) in &config.color_config {
|
||||||
match value {
|
match value {
|
||||||
|
@ -216,10 +214,12 @@ fn test_computable_style_static() {
|
||||||
let style_computer = StyleComputer::new(
|
let style_computer = StyleComputer::new(
|
||||||
&dummy_engine_state,
|
&dummy_engine_state,
|
||||||
&dummy_stack,
|
&dummy_stack,
|
||||||
HashMap::from([
|
[
|
||||||
("string".into(), ComputableStyle::Static(style1)),
|
("string".into(), ComputableStyle::Static(style1)),
|
||||||
("row_index".into(), ComputableStyle::Static(style2)),
|
("row_index".into(), ComputableStyle::Static(style2)),
|
||||||
]),
|
]
|
||||||
|
.into_iter()
|
||||||
|
.collect(),
|
||||||
);
|
);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
style_computer.compute("string", &Value::nothing(Span::unknown())),
|
style_computer.compute("string", &Value::nothing(Span::unknown())),
|
||||||
|
|
|
@ -32,6 +32,7 @@ nu-utils = { path = "../nu-utils", version = "0.81.1" }
|
||||||
nu-ansi-term = "0.47.0"
|
nu-ansi-term = "0.47.0"
|
||||||
|
|
||||||
alphanumeric-sort = "1.5"
|
alphanumeric-sort = "1.5"
|
||||||
|
ahash = "0.8.3"
|
||||||
atty = "0.2"
|
atty = "0.2"
|
||||||
base64 = "0.21"
|
base64 = "0.21"
|
||||||
byteorder = "1.4"
|
byteorder = "1.4"
|
||||||
|
|
|
@ -159,8 +159,8 @@ impl PartialEq for HashableValue {
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod test {
|
mod test {
|
||||||
use super::*;
|
use super::*;
|
||||||
|
use ahash::{HashMap, HashMapExt, HashSet, HashSetExt};
|
||||||
use nu_protocol::ast::{CellPath, PathMember};
|
use nu_protocol::ast::{CellPath, PathMember};
|
||||||
use std::collections::{HashMap, HashSet};
|
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn from_value() {
|
fn from_value() {
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
use super::hashable_value::HashableValue;
|
use super::hashable_value::HashableValue;
|
||||||
|
use ahash::{HashMap, HashMapExt};
|
||||||
use itertools::Itertools;
|
use itertools::Itertools;
|
||||||
use nu_engine::CallExt;
|
use nu_engine::CallExt;
|
||||||
use nu_protocol::ast::Call;
|
use nu_protocol::ast::Call;
|
||||||
|
@ -7,7 +8,6 @@ use nu_protocol::{
|
||||||
Example, IntoPipelineData, PipelineData, ShellError, Signature, Span, Spanned, SyntaxShape,
|
Example, IntoPipelineData, PipelineData, ShellError, Signature, Span, Spanned, SyntaxShape,
|
||||||
Type, Value,
|
Type, Value,
|
||||||
};
|
};
|
||||||
use std::collections::HashMap;
|
|
||||||
use std::iter;
|
use std::iter;
|
||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
use std::collections::HashMap;
|
use ahash::HashMap;
|
||||||
|
|
||||||
/// Return map of <deprecated_command_name, new_command_name>
|
/// Return map of <deprecated_command_name, new_command_name>
|
||||||
/// This covers simple deprecated commands nicely, but it's not great for deprecating
|
/// This covers simple deprecated commands nicely, but it's not great for deprecating
|
||||||
/// subcommands like `foo bar` where `foo` is still a valid command.
|
/// subcommands like `foo bar` where `foo` is still a valid command.
|
||||||
/// For those, it's currently easiest to have a "stub" command that just returns an error.
|
/// For those, it's currently easiest to have a "stub" command that just returns an error.
|
||||||
pub fn deprecated_commands() -> HashMap<String, String> {
|
pub fn deprecated_commands() -> HashMap<String, String> {
|
||||||
HashMap::from([
|
[
|
||||||
("keep".to_string(), "take".to_string()),
|
("keep".to_string(), "take".to_string()),
|
||||||
("match".to_string(), "find".to_string()),
|
("match".to_string(), "find".to_string()),
|
||||||
("nth".to_string(), "select".to_string()),
|
("nth".to_string(), "select".to_string()),
|
||||||
|
@ -25,5 +25,7 @@ pub fn deprecated_commands() -> HashMap<String, String> {
|
||||||
("benchmark".to_string(), "timeit".to_string()),
|
("benchmark".to_string(), "timeit".to_string()),
|
||||||
("str collect".to_string(), "str join".to_string()),
|
("str collect".to_string(), "str join".to_string()),
|
||||||
("old-alias".to_string(), "alias".to_string()),
|
("old-alias".to_string(), "alias".to_string()),
|
||||||
])
|
]
|
||||||
|
.into_iter()
|
||||||
|
.collect()
|
||||||
}
|
}
|
||||||
|
|
3
crates/nu-command/src/env/config/utils.rs
vendored
3
crates/nu-command/src/env/config/utils.rs
vendored
|
@ -1,4 +1,5 @@
|
||||||
use std::{collections::HashMap, path::PathBuf};
|
use ahash::HashMap;
|
||||||
|
use std::path::PathBuf;
|
||||||
|
|
||||||
use nu_protocol::{
|
use nu_protocol::{
|
||||||
engine::{EngineState, Stack},
|
engine::{EngineState, Stack},
|
||||||
|
|
2
crates/nu-command/src/env/with_env.rs
vendored
2
crates/nu-command/src/env/with_env.rs
vendored
|
@ -1,4 +1,4 @@
|
||||||
use std::collections::HashMap;
|
use ahash::{HashMap, HashMapExt};
|
||||||
|
|
||||||
use nu_engine::{eval_block, CallExt};
|
use nu_engine::{eval_block, CallExt};
|
||||||
use nu_protocol::{
|
use nu_protocol::{
|
||||||
|
|
|
@ -14,6 +14,7 @@ mod test_examples {
|
||||||
SplitRow, Str, StrJoin, StrLength, StrReplace, Update, Url, Values, Wrap,
|
SplitRow, Str, StrJoin, StrLength, StrReplace, Update, Url, Values, Wrap,
|
||||||
};
|
};
|
||||||
use crate::{Each, To};
|
use crate::{Each, To};
|
||||||
|
use ahash::{HashSet, HashSetExt};
|
||||||
use nu_cmd_lang::example_support::{
|
use nu_cmd_lang::example_support::{
|
||||||
check_all_signature_input_output_types_entries_have_examples,
|
check_all_signature_input_output_types_entries_have_examples,
|
||||||
check_example_evaluates_to_expected_output,
|
check_example_evaluates_to_expected_output,
|
||||||
|
@ -24,7 +25,6 @@ mod test_examples {
|
||||||
engine::{Command, EngineState, StateWorkingSet},
|
engine::{Command, EngineState, StateWorkingSet},
|
||||||
Type,
|
Type,
|
||||||
};
|
};
|
||||||
use std::collections::HashSet;
|
|
||||||
|
|
||||||
pub fn test_examples(cmd: impl Command + 'static) {
|
pub fn test_examples(cmd: impl Command + 'static) {
|
||||||
let examples = cmd.examples();
|
let examples = cmd.examples();
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
use std::collections::HashMap;
|
use ahash::{HashMap, HashMapExt};
|
||||||
#[cfg(all(
|
#[cfg(all(
|
||||||
feature = "trash-support",
|
feature = "trash-support",
|
||||||
not(target_os = "android"),
|
not(target_os = "android"),
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
use ahash::{HashMap, HashMapExt, HashSet, HashSetExt};
|
||||||
use nu_engine::CallExt;
|
use nu_engine::CallExt;
|
||||||
use nu_protocol::ast::Call;
|
use nu_protocol::ast::Call;
|
||||||
use nu_protocol::engine::{Command, EngineState, Stack};
|
use nu_protocol::engine::{Command, EngineState, Stack};
|
||||||
|
@ -5,7 +6,6 @@ use nu_protocol::{
|
||||||
Config, Example, PipelineData, ShellError, Signature, Span, SyntaxShape, Type, Value,
|
Config, Example, PipelineData, ShellError, Signature, Span, SyntaxShape, Type, Value,
|
||||||
};
|
};
|
||||||
use std::cmp::max;
|
use std::cmp::max;
|
||||||
use std::collections::{HashMap, HashSet};
|
|
||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub struct Join;
|
pub struct Join;
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
use ahash::{HashSet, HashSetExt};
|
||||||
use nu_engine::CallExt;
|
use nu_engine::CallExt;
|
||||||
use nu_protocol::ast::{Call, CellPath, PathMember};
|
use nu_protocol::ast::{Call, CellPath, PathMember};
|
||||||
use nu_protocol::engine::{Command, EngineState, Stack};
|
use nu_protocol::engine::{Command, EngineState, Stack};
|
||||||
|
@ -5,7 +6,6 @@ use nu_protocol::{
|
||||||
Category, Example, IntoInterruptiblePipelineData, IntoPipelineData, PipelineData,
|
Category, Example, IntoInterruptiblePipelineData, IntoPipelineData, PipelineData,
|
||||||
PipelineIterator, ShellError, Signature, Span, SyntaxShape, Type, Value,
|
PipelineIterator, ShellError, Signature, Span, SyntaxShape, Type, Value,
|
||||||
};
|
};
|
||||||
use std::collections::HashSet;
|
|
||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub struct Select;
|
pub struct Select;
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
use crate::formats::value_to_string;
|
use crate::formats::value_to_string;
|
||||||
|
use ahash::{HashMap, HashMapExt};
|
||||||
use itertools::Itertools;
|
use itertools::Itertools;
|
||||||
use nu_protocol::ast::Call;
|
use nu_protocol::ast::Call;
|
||||||
use nu_protocol::engine::{Command, EngineState, Stack};
|
use nu_protocol::engine::{Command, EngineState, Stack};
|
||||||
|
@ -7,7 +8,6 @@ use nu_protocol::{
|
||||||
Span, Type, Value,
|
Span, Type, Value,
|
||||||
};
|
};
|
||||||
use std::collections::hash_map::IntoIter;
|
use std::collections::hash_map::IntoIter;
|
||||||
use std::collections::HashMap;
|
|
||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub struct Uniq;
|
pub struct Uniq;
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
use ahash::HashSet;
|
||||||
use nu_engine::{eval_block, CallExt};
|
use nu_engine::{eval_block, CallExt};
|
||||||
use nu_protocol::ast::{Block, Call};
|
use nu_protocol::ast::{Block, Call};
|
||||||
use nu_protocol::engine::{Closure, Command, EngineState, Stack};
|
use nu_protocol::engine::{Closure, Command, EngineState, Stack};
|
||||||
|
@ -5,7 +6,6 @@ use nu_protocol::{
|
||||||
Category, Example, IntoInterruptiblePipelineData, IntoPipelineData, PipelineData,
|
Category, Example, IntoInterruptiblePipelineData, IntoPipelineData, PipelineData,
|
||||||
PipelineIterator, ShellError, Signature, Span, SyntaxShape, Type, Value,
|
PipelineIterator, ShellError, Signature, Span, SyntaxShape, Type, Value,
|
||||||
};
|
};
|
||||||
use std::collections::HashSet;
|
|
||||||
use std::iter::FromIterator;
|
use std::iter::FromIterator;
|
||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
use crate::formats::to::delimited::merge_descriptors;
|
use crate::formats::to::delimited::merge_descriptors;
|
||||||
|
use ahash::{HashMap, HashMapExt};
|
||||||
use fancy_regex::Regex;
|
use fancy_regex::Regex;
|
||||||
use nu_engine::CallExt;
|
use nu_engine::CallExt;
|
||||||
use nu_protocol::ast::Call;
|
use nu_protocol::ast::Call;
|
||||||
|
@ -9,7 +10,6 @@ use nu_protocol::{
|
||||||
};
|
};
|
||||||
use rust_embed::RustEmbed;
|
use rust_embed::RustEmbed;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use std::collections::HashMap;
|
|
||||||
use std::error::Error;
|
use std::error::Error;
|
||||||
use std::fmt::Write;
|
use std::fmt::Write;
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
use crate::math::utils::run_with_function;
|
use crate::math::utils::run_with_function;
|
||||||
|
use ahash::{HashMap, HashMapExt};
|
||||||
use nu_protocol::ast::Call;
|
use nu_protocol::ast::Call;
|
||||||
use nu_protocol::engine::{Command, EngineState, Stack};
|
use nu_protocol::engine::{Command, EngineState, Stack};
|
||||||
use nu_protocol::{Category, Example, PipelineData, ShellError, Signature, Span, Type, Value};
|
use nu_protocol::{Category, Example, PipelineData, ShellError, Signature, Span, Type, Value};
|
||||||
|
@ -142,7 +143,7 @@ pub fn mode(values: &[Value], _span: Span, head: &Span) -> Result<Value, ShellEr
|
||||||
})
|
})
|
||||||
.collect::<Result<Vec<HashableType>, ShellError>>()?;
|
.collect::<Result<Vec<HashableType>, ShellError>>()?;
|
||||||
|
|
||||||
let mut frequency_map = std::collections::HashMap::new();
|
let mut frequency_map = HashMap::new();
|
||||||
for v in hashable_values {
|
for v in hashable_values {
|
||||||
let counter = frequency_map.entry(v).or_insert(0);
|
let counter = frequency_map.entry(v).or_insert(0);
|
||||||
*counter += 1;
|
*counter += 1;
|
||||||
|
|
|
@ -9,7 +9,7 @@ use nu_protocol::{
|
||||||
};
|
};
|
||||||
use ureq::{Error, ErrorKind, Request, Response};
|
use ureq::{Error, ErrorKind, Request, Response};
|
||||||
|
|
||||||
use std::collections::HashMap;
|
use ahash::{HashMap, HashMapExt};
|
||||||
use std::io::BufReader;
|
use std::io::BufReader;
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
use std::str::FromStr;
|
use std::str::FromStr;
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
use std::{
|
use ahash::HashMap;
|
||||||
collections::HashMap,
|
use std::path::{Path, PathBuf};
|
||||||
path::{Path, PathBuf},
|
|
||||||
};
|
|
||||||
|
|
||||||
use nu_engine::CallExt;
|
use nu_engine::CallExt;
|
||||||
use nu_protocol::ast::Call;
|
use nu_protocol::ast::Call;
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
use ahash::{HashMap, HashMapExt};
|
||||||
use nu_ansi_term::*;
|
use nu_ansi_term::*;
|
||||||
use nu_engine::CallExt;
|
use nu_engine::CallExt;
|
||||||
use nu_protocol::engine::{EngineState, Stack};
|
use nu_protocol::engine::{EngineState, Stack};
|
||||||
|
@ -6,7 +7,6 @@ use nu_protocol::{
|
||||||
PipelineData, ShellError, Signature, Span, SyntaxShape, Type, Value,
|
PipelineData, ShellError, Signature, Span, SyntaxShape, Type, Value,
|
||||||
};
|
};
|
||||||
use once_cell::sync::Lazy;
|
use once_cell::sync::Lazy;
|
||||||
use std::collections::HashMap;
|
|
||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub struct AnsiCommand;
|
pub struct AnsiCommand;
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
use crate::hook::eval_hook;
|
use crate::hook::eval_hook;
|
||||||
|
use ahash::HashMap;
|
||||||
use nu_engine::env_to_strings;
|
use nu_engine::env_to_strings;
|
||||||
use nu_engine::CallExt;
|
use nu_engine::CallExt;
|
||||||
use nu_protocol::{
|
use nu_protocol::{
|
||||||
|
@ -11,7 +12,6 @@ use nu_protocol::{
|
||||||
use nu_system::ForegroundProcess;
|
use nu_system::ForegroundProcess;
|
||||||
use os_pipe::PipeReader;
|
use os_pipe::PipeReader;
|
||||||
use pathdiff::diff_paths;
|
use pathdiff::diff_paths;
|
||||||
use std::collections::HashMap;
|
|
||||||
use std::io::{BufRead, BufReader, Read, Write};
|
use std::io::{BufRead, BufReader, Read, Write};
|
||||||
use std::path::{Path, PathBuf};
|
use std::path::{Path, PathBuf};
|
||||||
use std::process::{Command as CommandSys, Stdio};
|
use std::process::{Command as CommandSys, Stdio};
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
use ahash::HashMap;
|
||||||
use nu_ansi_term::{Color, Style};
|
use nu_ansi_term::{Color, Style};
|
||||||
use nu_color_config::{get_color_map, StyleComputer};
|
use nu_color_config::{get_color_map, StyleComputer};
|
||||||
use nu_engine::CallExt;
|
use nu_engine::CallExt;
|
||||||
|
@ -11,7 +12,6 @@ use nu_protocol::{
|
||||||
engine::{Command, EngineState, Stack},
|
engine::{Command, EngineState, Stack},
|
||||||
Category, Example, PipelineData, ShellError, Signature, Span, SyntaxShape, Type, Value,
|
Category, Example, PipelineData, ShellError, Signature, Span, SyntaxShape, Type, Value,
|
||||||
};
|
};
|
||||||
use std::collections::HashMap;
|
|
||||||
|
|
||||||
/// A `less` like program to render a [Value] as a table.
|
/// A `less` like program to render a [Value] as a table.
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
|
use ahash::HashMap;
|
||||||
use nu_protocol::{ShellError, Span};
|
use nu_protocol::{ShellError, Span};
|
||||||
use once_cell::sync::Lazy;
|
use once_cell::sync::Lazy;
|
||||||
use std::collections::HashMap;
|
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
|
|
||||||
// Attribution: Thanks exa. Most of this file is taken from around here
|
// Attribution: Thanks exa. Most of this file is taken from around here
|
||||||
|
@ -86,7 +86,7 @@ impl Icons {
|
||||||
// }
|
// }
|
||||||
|
|
||||||
static MAP_BY_NAME: Lazy<HashMap<&'static str, char>> = Lazy::new(|| {
|
static MAP_BY_NAME: Lazy<HashMap<&'static str, char>> = Lazy::new(|| {
|
||||||
HashMap::from([
|
[
|
||||||
(".Trash", '\u{f1f8}'), //
|
(".Trash", '\u{f1f8}'), //
|
||||||
(".atom", '\u{e764}'), //
|
(".atom", '\u{e764}'), //
|
||||||
(".bashprofile", '\u{e615}'), //
|
(".bashprofile", '\u{e615}'), //
|
||||||
|
@ -124,7 +124,9 @@ static MAP_BY_NAME: Lazy<HashMap<&'static str, char>> = Lazy::new(|| {
|
||||||
("npmignore", '\u{e71e}'), //
|
("npmignore", '\u{e71e}'), //
|
||||||
("rubydoc", '\u{e73b}'), //
|
("rubydoc", '\u{e73b}'), //
|
||||||
("yarn.lock", '\u{e718}'), //
|
("yarn.lock", '\u{e718}'), //
|
||||||
])
|
]
|
||||||
|
.into_iter()
|
||||||
|
.collect()
|
||||||
});
|
});
|
||||||
|
|
||||||
pub fn icon_for_file(file_path: &Path, span: Span) -> Result<char, ShellError> {
|
pub fn icon_for_file(file_path: &Path, span: Span) -> Result<char, ShellError> {
|
||||||
|
|
|
@ -17,6 +17,7 @@ nu-glob = { path = "../nu-glob", version = "0.81.1" }
|
||||||
nu-utils = { path = "../nu-utils", version = "0.81.1" }
|
nu-utils = { path = "../nu-utils", version = "0.81.1" }
|
||||||
|
|
||||||
sysinfo ="0.29"
|
sysinfo ="0.29"
|
||||||
|
ahash = "0.8.3"
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
plugin = []
|
plugin = []
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
|
use ahash::HashSet;
|
||||||
use nu_protocol::Value;
|
use nu_protocol::Value;
|
||||||
use std::collections::HashSet;
|
|
||||||
|
|
||||||
pub fn get_columns(input: &[Value]) -> Vec<String> {
|
pub fn get_columns(input: &[Value]) -> Vec<String> {
|
||||||
let mut columns = vec![];
|
let mut columns = vec![];
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
use std::collections::HashMap;
|
use ahash::{HashMap, HashMapExt};
|
||||||
use std::path::{Path, PathBuf};
|
use std::path::{Path, PathBuf};
|
||||||
|
|
||||||
use nu_protocol::ast::{Call, Expr, PathMember};
|
use nu_protocol::ast::{Call, Expr, PathMember};
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
use crate::{current_dir_str, get_full_help, nu_variable::NuVariable};
|
use crate::{current_dir_str, get_full_help, nu_variable::NuVariable};
|
||||||
|
use ahash::{HashMap, HashMapExt};
|
||||||
use nu_path::expand_path_with;
|
use nu_path::expand_path_with;
|
||||||
use nu_protocol::{
|
use nu_protocol::{
|
||||||
ast::{
|
ast::{
|
||||||
|
@ -9,7 +10,6 @@ use nu_protocol::{
|
||||||
DataSource, IntoInterruptiblePipelineData, IntoPipelineData, PipelineData, PipelineMetadata,
|
DataSource, IntoInterruptiblePipelineData, IntoPipelineData, PipelineData, PipelineMetadata,
|
||||||
Range, ShellError, Span, Spanned, Unit, Value, VarId, ENV_VARIABLE_ID,
|
Range, ShellError, Span, Spanned, Unit, Value, VarId, ENV_VARIABLE_ID,
|
||||||
};
|
};
|
||||||
use std::collections::HashMap;
|
|
||||||
use std::time::Instant;
|
use std::time::Instant;
|
||||||
|
|
||||||
pub fn eval_operator(op: &Expression) -> Result<Operator, ShellError> {
|
pub fn eval_operator(op: &Expression) -> Result<Operator, ShellError> {
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
|
use ahash::{HashMap, HashMapExt};
|
||||||
use nu_protocol::{
|
use nu_protocol::{
|
||||||
engine::{Command, EngineState, Stack, Visibility},
|
engine::{Command, EngineState, Stack, Visibility},
|
||||||
ShellError, Signature, Span, SyntaxShape, Type, Value,
|
ShellError, Signature, Span, SyntaxShape, Type, Value,
|
||||||
};
|
};
|
||||||
use std::borrow::Borrow;
|
use std::borrow::Borrow;
|
||||||
use std::cmp::Ordering;
|
use std::cmp::Ordering;
|
||||||
use std::collections::HashMap;
|
|
||||||
|
|
||||||
pub fn create_scope(
|
pub fn create_scope(
|
||||||
engine_state: &EngineState,
|
engine_state: &EngineState,
|
||||||
|
|
|
@ -25,4 +25,5 @@ strip-ansi-escapes = "0.1"
|
||||||
crossterm = "0.26"
|
crossterm = "0.26"
|
||||||
ratatui = "0.20"
|
ratatui = "0.20"
|
||||||
ansi-str = "0.7"
|
ansi-str = "0.7"
|
||||||
|
ahash = "0.8.3"
|
||||||
lscolors = { version = "0.14", default-features = false, features = ["nu-ansi-term"] }
|
lscolors = { version = "0.14", default-features = false, features = ["nu-ansi-term"] }
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
use std::{collections::HashMap, io::Result};
|
use ahash::HashMap;
|
||||||
|
|
||||||
use nu_protocol::{
|
use nu_protocol::{
|
||||||
engine::{EngineState, Stack},
|
engine::{EngineState, Stack},
|
||||||
Value,
|
Value,
|
||||||
};
|
};
|
||||||
use ratatui::layout::Rect;
|
use ratatui::layout::Rect;
|
||||||
|
use std::io::Result;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
nu_common::{try_build_table, NuSpan},
|
nu_common::{try_build_table, NuSpan},
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
use std::{
|
use ahash::{HashMap, HashMapExt};
|
||||||
collections::HashMap,
|
use std::io::{self, Result};
|
||||||
io::{self, Result},
|
|
||||||
};
|
|
||||||
|
|
||||||
use crossterm::event::KeyEvent;
|
use crossterm::event::KeyEvent;
|
||||||
use nu_protocol::{
|
use nu_protocol::{
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
use std::collections::HashMap;
|
use ahash::{HashMap, HashMapExt};
|
||||||
|
|
||||||
use nu_engine::get_columns;
|
use nu_engine::get_columns;
|
||||||
use nu_protocol::{ast::PathMember, ListStream, PipelineData, PipelineMetadata, RawStream, Value};
|
use nu_protocol::{ast::PathMember, ListStream, PipelineData, PipelineMetadata, RawStream, Value};
|
||||||
|
|
|
@ -5,11 +5,12 @@ mod status_bar;
|
||||||
|
|
||||||
use std::{
|
use std::{
|
||||||
cmp::min,
|
cmp::min,
|
||||||
collections::HashMap,
|
|
||||||
io::{self, Result, Stdout},
|
io::{self, Result, Stdout},
|
||||||
sync::atomic::Ordering,
|
sync::atomic::Ordering,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
use ahash::{HashMap, HashMapExt};
|
||||||
|
|
||||||
use crossterm::{
|
use crossterm::{
|
||||||
event::{KeyCode, KeyEvent, KeyModifiers},
|
event::{KeyCode, KeyEvent, KeyModifiers},
|
||||||
execute,
|
execute,
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
mod command;
|
mod command;
|
||||||
|
|
||||||
use std::{borrow::Cow, collections::HashMap};
|
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
commands::{SimpleCommand, ViewCommand},
|
commands::{SimpleCommand, ViewCommand},
|
||||||
views::View,
|
views::View,
|
||||||
};
|
};
|
||||||
|
use ahash::HashMap;
|
||||||
|
use std::borrow::Cow;
|
||||||
|
|
||||||
pub use command::Command;
|
pub use command::Command;
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
mod tablew;
|
mod tablew;
|
||||||
|
|
||||||
use std::{borrow::Cow, collections::HashMap};
|
use std::borrow::Cow;
|
||||||
|
|
||||||
|
use ahash::{HashMap, HashMapExt};
|
||||||
|
|
||||||
use crossterm::event::{KeyCode, KeyEvent};
|
use crossterm::event::{KeyCode, KeyEvent};
|
||||||
use nu_color_config::{get_color_map, StyleComputer};
|
use nu_color_config::{get_color_map, StyleComputer};
|
||||||
|
|
|
@ -21,6 +21,7 @@ chrono = { default-features = false, features = ['std'], version = "0.4" }
|
||||||
itertools = "0.10"
|
itertools = "0.10"
|
||||||
log = "0.4"
|
log = "0.4"
|
||||||
serde_json = "1.0"
|
serde_json = "1.0"
|
||||||
|
ahash = "0.8.3"
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
rstest = { version = "0.17", default-features = false }
|
rstest = { version = "0.17", default-features = false }
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
use crate::parser_path::ParserPath;
|
use crate::parser_path::ParserPath;
|
||||||
|
use ahash::{HashMap, HashMapExt, HashSet, HashSetExt};
|
||||||
use itertools::Itertools;
|
use itertools::Itertools;
|
||||||
use log::trace;
|
use log::trace;
|
||||||
use nu_path::canonicalize_with;
|
use nu_path::canonicalize_with;
|
||||||
|
@ -11,7 +12,6 @@ use nu_protocol::{
|
||||||
span, Alias, BlockId, Exportable, Module, ModuleId, ParseError, PositionalArg,
|
span, Alias, BlockId, Exportable, Module, ModuleId, ParseError, PositionalArg,
|
||||||
ResolvedImportPattern, Span, Spanned, SyntaxShape, Type, VarId,
|
ResolvedImportPattern, Span, Spanned, SyntaxShape, Type, VarId,
|
||||||
};
|
};
|
||||||
use std::collections::{HashMap, HashSet};
|
|
||||||
use std::ffi::OsStr;
|
use std::ffi::OsStr;
|
||||||
use std::path::{Path, PathBuf};
|
use std::path::{Path, PathBuf};
|
||||||
|
|
||||||
|
|
|
@ -27,13 +27,10 @@ use crate::parse_keywords::{
|
||||||
parse_use, parse_where, parse_where_expr, LIB_DIRS_VAR,
|
parse_use, parse_where, parse_where_expr, LIB_DIRS_VAR,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
use ahash::{HashMap, HashMapExt, HashSet, HashSetExt};
|
||||||
use itertools::Itertools;
|
use itertools::Itertools;
|
||||||
use log::trace;
|
use log::trace;
|
||||||
use std::{
|
use std::{num::ParseIntError, str};
|
||||||
collections::{HashMap, HashSet},
|
|
||||||
num::ParseIntError,
|
|
||||||
str,
|
|
||||||
};
|
|
||||||
|
|
||||||
#[cfg(feature = "plugin")]
|
#[cfg(feature = "plugin")]
|
||||||
use crate::parse_keywords::parse_register;
|
use crate::parse_keywords::parse_register;
|
||||||
|
|
|
@ -18,3 +18,4 @@ bincode = "1.3"
|
||||||
rmp-serde = "1.1"
|
rmp-serde = "1.1"
|
||||||
serde = { version = "1.0" }
|
serde = { version = "1.0" }
|
||||||
serde_json = { version = "1.0"}
|
serde_json = { version = "1.0"}
|
||||||
|
ahash = "0.8.3"
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
mod declaration;
|
mod declaration;
|
||||||
|
use ahash::HashMap;
|
||||||
pub use declaration::PluginDeclaration;
|
pub use declaration::PluginDeclaration;
|
||||||
use nu_engine::documentation::get_flags_section;
|
use nu_engine::documentation::get_flags_section;
|
||||||
use std::collections::HashMap;
|
|
||||||
|
|
||||||
use crate::protocol::{CallInput, LabeledError, PluginCall, PluginData, PluginResponse};
|
use crate::protocol::{CallInput, LabeledError, PluginCall, PluginData, PluginResponse};
|
||||||
use crate::EncodingType;
|
use crate::EncodingType;
|
||||||
|
|
|
@ -29,6 +29,7 @@ strum = "0.24"
|
||||||
strum_macros = "0.24"
|
strum_macros = "0.24"
|
||||||
thiserror = "1.0"
|
thiserror = "1.0"
|
||||||
typetag = "0.2"
|
typetag = "0.2"
|
||||||
|
ahash = "0.8.3"
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
plugin = ["serde_json"]
|
plugin = ["serde_json"]
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
use std::collections::HashMap;
|
use ahash::{HashMap, HashMapExt};
|
||||||
|
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use crate::{span, ModuleId, Span};
|
use crate::{span, ModuleId, Span};
|
||||||
use std::collections::HashSet;
|
use ahash::{HashSet, HashSetExt};
|
||||||
|
|
||||||
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
|
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
|
||||||
pub enum ImportPatternMember {
|
pub enum ImportPatternMember {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
use crate::{ShellError, Span, Value};
|
use crate::{ShellError, Span, Value};
|
||||||
|
use ahash::{HashMap, HashMapExt};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use std::collections::HashMap;
|
|
||||||
|
|
||||||
const TRIM_STRATEGY_DEFAULT: TrimStrategy = TrimStrategy::Wrap {
|
const TRIM_STRATEGY_DEFAULT: TrimStrategy = TrimStrategy::Wrap {
|
||||||
try_to_keep_words: true,
|
try_to_keep_words: true,
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
use std::collections::HashMap;
|
use ahash::HashMap;
|
||||||
|
|
||||||
use crate::{BlockId, Value, VarId};
|
use crate::{BlockId, Value, VarId};
|
||||||
|
|
||||||
|
|
|
@ -7,17 +7,15 @@ use crate::{
|
||||||
Signature, Span, Type, VarId, Variable, VirtualPathId,
|
Signature, Span, Type, VarId, Variable, VirtualPathId,
|
||||||
};
|
};
|
||||||
use crate::{ParseError, Value};
|
use crate::{ParseError, Value};
|
||||||
|
use ahash::{HashMap, HashMapExt, HashSet, HashSetExt};
|
||||||
use core::panic;
|
use core::panic;
|
||||||
use std::borrow::Borrow;
|
use std::borrow::Borrow;
|
||||||
use std::num::NonZeroUsize;
|
use std::num::NonZeroUsize;
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
use std::{
|
use std::sync::{
|
||||||
collections::{HashMap, HashSet},
|
|
||||||
sync::{
|
|
||||||
atomic::{AtomicBool, AtomicU32},
|
atomic::{AtomicBool, AtomicU32},
|
||||||
Arc, Mutex,
|
Arc, Mutex,
|
||||||
},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static PWD_ENV: &str = "PWD";
|
static PWD_ENV: &str = "PWD";
|
||||||
|
@ -170,7 +168,9 @@ impl EngineState {
|
||||||
false,
|
false,
|
||||||
),
|
),
|
||||||
ctrlc: None,
|
ctrlc: None,
|
||||||
env_vars: EnvVars::from([(DEFAULT_OVERLAY_NAME.to_string(), HashMap::new())]),
|
env_vars: [(DEFAULT_OVERLAY_NAME.to_string(), HashMap::new())]
|
||||||
|
.into_iter()
|
||||||
|
.collect(),
|
||||||
previous_env_vars: HashMap::new(),
|
previous_env_vars: HashMap::new(),
|
||||||
config: Config::default(),
|
config: Config::default(),
|
||||||
pipeline_externals_state: Arc::new((AtomicU32::new(0), AtomicU32::new(0))),
|
pipeline_externals_state: Arc::new((AtomicU32::new(0), AtomicU32::new(0))),
|
||||||
|
@ -436,7 +436,7 @@ impl EngineState {
|
||||||
env_vars.insert(name, val);
|
env_vars.insert(name, val);
|
||||||
} else {
|
} else {
|
||||||
self.env_vars
|
self.env_vars
|
||||||
.insert(overlay_name, HashMap::from([(name, val)]));
|
.insert(overlay_name, [(name, val)].into_iter().collect());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
use crate::{DeclId, ModuleId, OverlayId, Type, Value, VarId};
|
use crate::{DeclId, ModuleId, OverlayId, Type, Value, VarId};
|
||||||
|
use ahash::{HashMap, HashMapExt};
|
||||||
use std::borrow::Borrow;
|
use std::borrow::Borrow;
|
||||||
use std::collections::HashMap;
|
|
||||||
use std::hash::{Hash, Hasher};
|
use std::hash::{Hash, Hasher};
|
||||||
|
|
||||||
pub static DEFAULT_OVERLAY_NAME: &str = "zero";
|
pub static DEFAULT_OVERLAY_NAME: &str = "zero";
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
use std::collections::{HashMap, HashSet};
|
use ahash::{HashMap, HashMapExt, HashSet, HashSetExt};
|
||||||
|
|
||||||
use crate::engine::EngineState;
|
use crate::engine::EngineState;
|
||||||
use crate::engine::DEFAULT_OVERLAY_NAME;
|
use crate::engine::DEFAULT_OVERLAY_NAME;
|
||||||
|
@ -154,13 +154,14 @@ impl Stack {
|
||||||
if let Some(env_vars) = scope.get_mut(last_overlay) {
|
if let Some(env_vars) = scope.get_mut(last_overlay) {
|
||||||
env_vars.insert(var, value);
|
env_vars.insert(var, value);
|
||||||
} else {
|
} else {
|
||||||
scope.insert(last_overlay.into(), HashMap::from([(var, value)]));
|
scope.insert(last_overlay.into(), [(var, value)].into_iter().collect());
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
self.env_vars.push(HashMap::from([(
|
self.env_vars.push(
|
||||||
last_overlay.into(),
|
[(last_overlay.into(), [(var, value)].into_iter().collect())]
|
||||||
HashMap::from([(var, value)]),
|
.into_iter()
|
||||||
)]));
|
.collect(),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// TODO: Remove panic
|
// TODO: Remove panic
|
||||||
|
@ -394,7 +395,7 @@ impl Stack {
|
||||||
env_hidden.insert(name.into());
|
env_hidden.insert(name.into());
|
||||||
} else {
|
} else {
|
||||||
self.env_hidden
|
self.env_hidden
|
||||||
.insert(active_overlay.into(), HashSet::from([name.into()]));
|
.insert(active_overlay.into(), [name.into()].into_iter().collect());
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
use std::collections::HashMap;
|
use ahash::{HashMap, HashMapExt};
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
use std::str::FromStr;
|
use std::str::FromStr;
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,7 @@ use crate::ast::{Math, Operator};
|
||||||
use crate::engine::EngineState;
|
use crate::engine::EngineState;
|
||||||
use crate::ShellError;
|
use crate::ShellError;
|
||||||
use crate::{did_you_mean, BlockId, Config, Span, Spanned, Type, VarId};
|
use crate::{did_you_mean, BlockId, Config, Span, Spanned, Type, VarId};
|
||||||
|
use ahash::HashMap;
|
||||||
use byte_unit::ByteUnit;
|
use byte_unit::ByteUnit;
|
||||||
use chrono::{DateTime, Duration, FixedOffset};
|
use chrono::{DateTime, Duration, FixedOffset};
|
||||||
use chrono_humanize::HumanTime;
|
use chrono_humanize::HumanTime;
|
||||||
|
@ -25,7 +26,6 @@ pub use range::*;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use std::{
|
use std::{
|
||||||
borrow::Cow,
|
borrow::Cow,
|
||||||
collections::HashMap,
|
|
||||||
fmt::{Display, Formatter, Result as FmtResult},
|
fmt::{Display, Formatter, Result as FmtResult},
|
||||||
iter,
|
iter,
|
||||||
path::PathBuf,
|
path::PathBuf,
|
||||||
|
|
|
@ -31,4 +31,5 @@ mach2 = "0.4"
|
||||||
chrono = "0.4"
|
chrono = "0.4"
|
||||||
ntapi = "0.4"
|
ntapi = "0.4"
|
||||||
once_cell = "1.17"
|
once_cell = "1.17"
|
||||||
|
ahash="0.8.3"
|
||||||
winapi = { version = "0.3", features = ["tlhelp32", "fileapi", "handleapi", "ifdef", "ioapiset", "minwindef", "pdh", "psapi", "synchapi", "sysinfoapi", "winbase", "winerror", "winioctl", "winnt", "oleauto", "wbemcli", "rpcdce", "combaseapi", "objidl", "powerbase", "netioapi", "lmcons", "lmaccess", "lmapibuf", "memoryapi", "shellapi", "std", "securitybaseapi"] }
|
winapi = { version = "0.3", features = ["tlhelp32", "fileapi", "handleapi", "ifdef", "ioapiset", "minwindef", "pdh", "psapi", "synchapi", "sysinfoapi", "winbase", "winerror", "winioctl", "winnt", "oleauto", "wbemcli", "rpcdce", "combaseapi", "objidl", "powerbase", "netioapi", "lmcons", "lmaccess", "lmapibuf", "memoryapi", "shellapi", "std", "securitybaseapi"] }
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
// Attribution: a lot of this came from procs https://github.com/dalance/procs
|
// Attribution: a lot of this came from procs https://github.com/dalance/procs
|
||||||
// and sysinfo https://github.com/GuillaumeGomez/sysinfo
|
// and sysinfo https://github.com/GuillaumeGomez/sysinfo
|
||||||
|
|
||||||
|
use ahash::{HashMap, HashMapExt};
|
||||||
use chrono::offset::TimeZone;
|
use chrono::offset::TimeZone;
|
||||||
use chrono::{Local, NaiveDate};
|
use chrono::{Local, NaiveDate};
|
||||||
use libc::c_void;
|
use libc::c_void;
|
||||||
|
@ -13,7 +14,6 @@ use ntapi::ntrtl::{RtlGetVersion, PRTL_USER_PROCESS_PARAMETERS, RTL_USER_PROCESS
|
||||||
use ntapi::ntwow64::{PEB32, PRTL_USER_PROCESS_PARAMETERS32, RTL_USER_PROCESS_PARAMETERS32};
|
use ntapi::ntwow64::{PEB32, PRTL_USER_PROCESS_PARAMETERS32, RTL_USER_PROCESS_PARAMETERS32};
|
||||||
use once_cell::sync::Lazy;
|
use once_cell::sync::Lazy;
|
||||||
use std::cell::RefCell;
|
use std::cell::RefCell;
|
||||||
use std::collections::HashMap;
|
|
||||||
use std::ffi::OsString;
|
use std::ffi::OsString;
|
||||||
use std::mem::{size_of, zeroed, MaybeUninit};
|
use std::mem::{size_of, zeroed, MaybeUninit};
|
||||||
use std::os::windows::ffi::OsStringExt;
|
use std::os::windows::ffi::OsStringExt;
|
||||||
|
|
|
@ -18,6 +18,7 @@ nu-color-config = { path = "../nu-color-config", version = "0.81.1" }
|
||||||
nu-ansi-term = "0.47.0"
|
nu-ansi-term = "0.47.0"
|
||||||
|
|
||||||
tabled = { version = "0.12", features = ["color"], default-features = false }
|
tabled = { version = "0.12", features = ["color"], default-features = false }
|
||||||
|
ahash = "0.8.3"
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
# nu-test-support = { path="../nu-test-support", version = "0.81.1" }
|
# nu-test-support = { path="../nu-test-support", version = "0.81.1" }
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
use crate::table_theme::TableTheme;
|
use crate::table_theme::TableTheme;
|
||||||
|
use ahash::HashMap;
|
||||||
use nu_ansi_term::Style;
|
use nu_ansi_term::Style;
|
||||||
use nu_color_config::TextStyle;
|
use nu_color_config::TextStyle;
|
||||||
use nu_protocol::TrimStrategy;
|
use nu_protocol::TrimStrategy;
|
||||||
use std::{cmp::min, collections::HashMap};
|
use std::cmp::min;
|
||||||
use tabled::{
|
use tabled::{
|
||||||
builder::Builder,
|
builder::Builder,
|
||||||
grid::{
|
grid::{
|
||||||
|
@ -375,7 +376,7 @@ fn load_theme(
|
||||||
let mut theme = theme.get_theme();
|
let mut theme = theme.get_theme();
|
||||||
|
|
||||||
if !with_header {
|
if !with_header {
|
||||||
theme.set_horizontals(HashMap::new());
|
theme.set_horizontals(std::collections::HashMap::new());
|
||||||
} else if with_footer && table.count_rows() > 2 {
|
} else if with_footer && table.count_rows() > 2 {
|
||||||
if let Some(line) = theme.get_horizontal(1) {
|
if let Some(line) = theme.get_horizontal(1) {
|
||||||
theme.insert_horizontal(table.count_rows() - 1, line);
|
theme.insert_horizontal(table.count_rows() - 1, line);
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
|
use ahash::{HashMap, HashMapExt};
|
||||||
use nu_color_config::{Alignment, StyleComputer, TextStyle};
|
use nu_color_config::{Alignment, StyleComputer, TextStyle};
|
||||||
use nu_engine::column::get_columns;
|
use nu_engine::column::get_columns;
|
||||||
use nu_protocol::{ast::PathMember, Config, Span, TableIndexMode, Value};
|
use nu_protocol::{ast::PathMember, Config, Span, TableIndexMode, Value};
|
||||||
use std::collections::HashMap;
|
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use std::{cmp::max, sync::atomic::AtomicBool};
|
use std::{cmp::max, sync::atomic::AtomicBool};
|
||||||
|
|
||||||
|
|
|
@ -2,10 +2,10 @@ mod collapse;
|
||||||
mod expanded;
|
mod expanded;
|
||||||
mod general;
|
mod general;
|
||||||
|
|
||||||
|
use ahash::HashMap;
|
||||||
use nu_color_config::{Alignment, StyleComputer, TextStyle};
|
use nu_color_config::{Alignment, StyleComputer, TextStyle};
|
||||||
use nu_protocol::TrimStrategy;
|
use nu_protocol::TrimStrategy;
|
||||||
use nu_protocol::{Config, FooterMode, ShellError, Span, Value};
|
use nu_protocol::{Config, FooterMode, ShellError, Span, Value};
|
||||||
use std::collections::HashMap;
|
|
||||||
|
|
||||||
use crate::{string_wrap, NuTable, TableConfig, TableTheme};
|
use crate::{string_wrap, NuTable, TableConfig, TableTheme};
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
use std::collections::HashMap;
|
|
||||||
|
|
||||||
use nu_color_config::StyleComputer;
|
use nu_color_config::StyleComputer;
|
||||||
use nu_protocol::{Config, Span, Value};
|
use nu_protocol::{Config, Span, Value};
|
||||||
use tabled::{
|
use tabled::{
|
||||||
|
@ -46,7 +44,7 @@ fn build_table(val: TableValue, style_computer: &StyleComputer, theme: &TableThe
|
||||||
let mut table = PoolTable::from(val);
|
let mut table = PoolTable::from(val);
|
||||||
|
|
||||||
let mut theme = theme.get_theme_full();
|
let mut theme = theme.get_theme_full();
|
||||||
theme.set_horizontals(HashMap::default());
|
theme.set_horizontals(std::collections::HashMap::default());
|
||||||
|
|
||||||
table.with(SetRawStyle(theme));
|
table.with(SetRawStyle(theme));
|
||||||
table.with(SetAlignment(AlignmentHorizontal::Left));
|
table.with(SetAlignment(AlignmentHorizontal::Left));
|
||||||
|
|
|
@ -25,3 +25,4 @@ gjson = "0.8"
|
||||||
scraper = { default-features = false, version = "0.16" }
|
scraper = { default-features = false, version = "0.16" }
|
||||||
sxd-document = "0.3"
|
sxd-document = "0.3"
|
||||||
sxd-xpath = "0.4"
|
sxd-xpath = "0.4"
|
||||||
|
ahash = "0.8.3"
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
use crate::query_web::css;
|
use crate::query_web::css;
|
||||||
|
use ahash::{HashMap, HashMapExt};
|
||||||
use scraper::{element_ref::ElementRef, Html, Selector as ScraperSelector};
|
use scraper::{element_ref::ElementRef, Html, Selector as ScraperSelector};
|
||||||
use std::collections::HashMap;
|
|
||||||
|
|
||||||
pub type Headers = HashMap<String, usize>;
|
pub type Headers = HashMap<String, usize>;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue