mirror of
https://github.com/sharkdp/fd
synced 2024-07-05 17:29:31 +00:00
Replace once_cell with stdlib
LazyLock isn't standardized yet, but OnceLock is good enough for what we need.
This commit is contained in:
parent
d6e9cbfff3
commit
91e3c3cba5
1
Cargo.lock
generated
1
Cargo.lock
generated
|
@ -347,7 +347,6 @@ dependencies = [
|
||||||
"normpath",
|
"normpath",
|
||||||
"nu-ansi-term",
|
"nu-ansi-term",
|
||||||
"num_cpus",
|
"num_cpus",
|
||||||
"once_cell",
|
|
||||||
"regex",
|
"regex",
|
||||||
"regex-syntax",
|
"regex-syntax",
|
||||||
"tempfile",
|
"tempfile",
|
||||||
|
|
|
@ -18,7 +18,7 @@ readme = "README.md"
|
||||||
repository = "https://github.com/sharkdp/fd"
|
repository = "https://github.com/sharkdp/fd"
|
||||||
version = "8.7.0"
|
version = "8.7.0"
|
||||||
edition= "2021"
|
edition= "2021"
|
||||||
rust-version = "1.67.0"
|
rust-version = "1.70.0"
|
||||||
|
|
||||||
[badges.appveyor]
|
[badges.appveyor]
|
||||||
repository = "sharkdp/fd"
|
repository = "sharkdp/fd"
|
||||||
|
@ -47,7 +47,6 @@ globset = "0.4"
|
||||||
anyhow = "1.0"
|
anyhow = "1.0"
|
||||||
dirs-next = "2.0"
|
dirs-next = "2.0"
|
||||||
normpath = "1.1.1"
|
normpath = "1.1.1"
|
||||||
once_cell = "1.17.2"
|
|
||||||
crossbeam-channel = "0.5.8"
|
crossbeam-channel = "0.5.8"
|
||||||
clap_complete = {version = "4.3.0", optional = true}
|
clap_complete = {version = "4.3.0", optional = true}
|
||||||
faccess = "0.2.4"
|
faccess = "0.2.4"
|
||||||
|
|
|
@ -1,11 +1,10 @@
|
||||||
|
use std::cell::OnceCell;
|
||||||
use std::ffi::OsString;
|
use std::ffi::OsString;
|
||||||
use std::fs::{FileType, Metadata};
|
use std::fs::{FileType, Metadata};
|
||||||
use std::path::{Path, PathBuf};
|
use std::path::{Path, PathBuf};
|
||||||
|
|
||||||
use lscolors::{Colorable, LsColors, Style};
|
use lscolors::{Colorable, LsColors, Style};
|
||||||
|
|
||||||
use once_cell::unsync::OnceCell;
|
|
||||||
|
|
||||||
use crate::config::Config;
|
use crate::config::Config;
|
||||||
use crate::filesystem::strip_current_dir;
|
use crate::filesystem::strip_current_dir;
|
||||||
|
|
||||||
|
|
|
@ -9,11 +9,10 @@ use std::io;
|
||||||
use std::iter;
|
use std::iter;
|
||||||
use std::path::{Component, Path, PathBuf, Prefix};
|
use std::path::{Component, Path, PathBuf, Prefix};
|
||||||
use std::process::Stdio;
|
use std::process::Stdio;
|
||||||
use std::sync::Mutex;
|
use std::sync::{Mutex, OnceLock};
|
||||||
|
|
||||||
use anyhow::{bail, Result};
|
use anyhow::{bail, Result};
|
||||||
use argmax::Command;
|
use argmax::Command;
|
||||||
use once_cell::sync::Lazy;
|
|
||||||
use regex::Regex;
|
use regex::Regex;
|
||||||
|
|
||||||
use crate::exit_codes::{merge_exitcodes, ExitCode};
|
use crate::exit_codes::{merge_exitcodes, ExitCode};
|
||||||
|
@ -231,8 +230,7 @@ impl CommandTemplate {
|
||||||
I: IntoIterator<Item = S>,
|
I: IntoIterator<Item = S>,
|
||||||
S: AsRef<str>,
|
S: AsRef<str>,
|
||||||
{
|
{
|
||||||
static PLACEHOLDER_PATTERN: Lazy<Regex> =
|
static PLACEHOLDER_PATTERN: OnceLock<Regex> = OnceLock::new();
|
||||||
Lazy::new(|| Regex::new(r"\{(/?\.?|//)\}").unwrap());
|
|
||||||
|
|
||||||
let mut args = Vec::new();
|
let mut args = Vec::new();
|
||||||
let mut has_placeholder = false;
|
let mut has_placeholder = false;
|
||||||
|
@ -243,7 +241,10 @@ impl CommandTemplate {
|
||||||
let mut tokens = Vec::new();
|
let mut tokens = Vec::new();
|
||||||
let mut start = 0;
|
let mut start = 0;
|
||||||
|
|
||||||
for placeholder in PLACEHOLDER_PATTERN.find_iter(arg) {
|
let pattern =
|
||||||
|
PLACEHOLDER_PATTERN.get_or_init(|| Regex::new(r"\{(/?\.?|//)\}").unwrap());
|
||||||
|
|
||||||
|
for placeholder in pattern.find_iter(arg) {
|
||||||
// Leading text before the placeholder.
|
// Leading text before the placeholder.
|
||||||
if placeholder.start() > start {
|
if placeholder.start() > start {
|
||||||
tokens.push(Token::Text(arg[start..placeholder.start()].to_owned()));
|
tokens.push(Token::Text(arg[start..placeholder.start()].to_owned()));
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
|
use std::sync::OnceLock;
|
||||||
|
|
||||||
use anyhow::anyhow;
|
use anyhow::anyhow;
|
||||||
use once_cell::sync::Lazy;
|
|
||||||
use regex::Regex;
|
use regex::Regex;
|
||||||
|
|
||||||
static SIZE_CAPTURES: Lazy<Regex> =
|
static SIZE_CAPTURES: OnceLock<Regex> = OnceLock::new();
|
||||||
Lazy::new(|| Regex::new(r"(?i)^([+-]?)(\d+)(b|[kmgt]i?b?)$").unwrap());
|
|
||||||
|
|
||||||
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
|
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
|
||||||
pub enum SizeFilter {
|
pub enum SizeFilter {
|
||||||
|
@ -31,11 +31,13 @@ impl SizeFilter {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn parse_opt(s: &str) -> Option<Self> {
|
fn parse_opt(s: &str) -> Option<Self> {
|
||||||
if !SIZE_CAPTURES.is_match(s) {
|
let pattern =
|
||||||
|
SIZE_CAPTURES.get_or_init(|| Regex::new(r"(?i)^([+-]?)(\d+)(b|[kmgt]i?b?)$").unwrap());
|
||||||
|
if !pattern.is_match(s) {
|
||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
|
|
||||||
let captures = SIZE_CAPTURES.captures(s)?;
|
let captures = pattern.captures(s)?;
|
||||||
let limit_kind = captures.get(1).map_or("+", |m| m.as_str());
|
let limit_kind = captures.get(1).map_or("+", |m| m.as_str());
|
||||||
let quantity = captures
|
let quantity = captures
|
||||||
.get(2)
|
.get(2)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user