diff --git a/src/Rust/Cargo.lock b/src/Rust/Cargo.lock index f3b6289ea0aae5cc44f20b674c59520f3fcca8a7..7c1fc712464ccb8f7f520124034d1b97a0234529 100644 --- a/src/Rust/Cargo.lock +++ b/src/Rust/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "ab_glyph" @@ -90,9 +90,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.93" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775" +checksum = "c1fd03a028ef38ba2276dce7e33fcd6369c158a1bca17946c4b1b701891c1ff7" [[package]] name = "approx" @@ -194,9 +194,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.2" +version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f34d93e62b03caf570cccc334cbc6c2fceca82f39211051345108adcba3eebdc" +checksum = "27f657647bcff5394bf56c7317665bbf790a137a50eaaa5c6bfbb9e27a518f2d" dependencies = [ "shlex", ] @@ -242,9 +242,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.21" +version = "4.5.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb3b4b9e5a7c7514dfa52869339ee98b3156b0bfb4e8a77c4ff4babb64b1604f" +checksum = "3135e7ec2ef7b10c6ed8950f0f792ed96ee093fa088608f1c76e569722700c84" dependencies = [ "clap_builder", "clap_derive", @@ -252,9 +252,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.21" +version = "4.5.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b17a95aa67cc7b5ebd32aa5370189aa0d79069ef1c64ce893bd30fb24bff20ec" +checksum = "30582fc632330df2bd26877bde0c1f4470d57c582bbc070376afcd04d8cb4838" dependencies = [ "anstream", "anstyle", @@ -286,9 +286,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afb84c814227b90d6895e01398aee0d8033c00e7466aca416fb6a8e0eb19d8a7" +checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "clap_mangen" @@ -551,9 +551,9 @@ checksum = "dd2e7510819d6fbf51a5545c8f922716ecfb14df168a3242f7d33e0239efe6a1" [[package]] name = "fastrand" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "486f806e73c5707928240ddc295403b1b93c96a02038563881c4a2fd84b81ac4" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] name = "fnv" @@ -713,9 +713,9 @@ checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" [[package]] name = "js-sys" -version = "0.3.74" +version = "0.3.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a865e038f7f6ed956f788f0d7d60c541fff74c7bd74272c5d4cf15c63743e705" +checksum = "6717b6b5b077764fb5966237269cb3c64edddde4b14ce42647430a78ced9e7b7" dependencies = [ "once_cell", "wasm-bindgen", @@ -729,9 +729,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.167" +version = "0.2.168" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09d6582e104315a817dff97f75133544b2e094ee22447d2acf4a74e189ba06fc" +checksum = "5aaeb2981e0606ca11d79718f8bb01164f1d6ed75080182d3abf017e6d244b6d" [[package]] name = "linked-hash-map" @@ -1092,15 +1092,15 @@ checksum = "88f8660c1ff60292143c98d08fc6e2f654d722db50410e3f3797d40baaf9d8f3" [[package]] name = "rustix" -version = "0.38.41" +version = "0.38.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7f649912bc1495e167a6edee79151c84b1bad49748cb4f1f1167f459f6224f6" +checksum = "f93dc38ecbab2eb790ff964bb77fa94faf256fd3e73285fd7ba0903b76bedb85" dependencies = [ "bitflags", "errno", "libc", "linux-raw-sys", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -1332,18 +1332,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.4" +version = "2.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f49a1853cf82743e3b7950f77e0f4d622ca36cf4317cba00c767838bac8d490" +checksum = "8fec2a1820ebd077e2b90c4df007bebf344cd394098a13c563957d0afc83ea47" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "2.0.4" +version = "2.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8381894bb3efe0c4acac3ded651301ceee58a15d47c2e34885ed1908ad667061" +checksum = "d65750cab40f4ff1929fb1ba509e9914eb756131cef4210da8d5d700d26f6312" dependencies = [ "proc-macro2", "quote", @@ -1667,9 +1667,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.97" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d15e63b4482863c109d70a7b8706c1e364eb6ea449b201a76c5b89cedcec2d5c" +checksum = "a474f6281d1d70c17ae7aa6a613c87fce69a127e2624002df63dcb39d6cf6396" dependencies = [ "cfg-if", "once_cell", @@ -1678,13 +1678,12 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.97" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d36ef12e3aaca16ddd3f67922bc63e48e953f126de60bd33ccc0101ef9998cd" +checksum = "5f89bb38646b4f81674e8f5c3fb81b562be1fd936d84320f3264486418519c79" dependencies = [ "bumpalo", "log", - "once_cell", "proc-macro2", "quote", "syn 2.0.90", @@ -1693,9 +1692,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.97" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "705440e08b42d3e4b36de7d66c944be628d579796b8090bfa3471478a2260051" +checksum = "2cc6181fd9a7492eef6fef1f33961e3695e4579b9872a6f7c83aee556666d4fe" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1703,9 +1702,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.97" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98c9ae5a76e46f4deecd0f0255cc223cfa18dc9b261213b8aa0c7b36f61b3f1d" +checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" dependencies = [ "proc-macro2", "quote", @@ -1716,15 +1715,15 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.97" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ee99da9c5ba11bd675621338ef6fa52296b76b83305e9b6e5c77d4c286d6d49" +checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" [[package]] name = "web-sys" -version = "0.3.74" +version = "0.3.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a98bc3c33f0fe7e59ad7cd041b89034fa82a7c2d4365ca538dda6cdaf513863c" +checksum = "04dd7223427d52553d3702c004d3b2fe07c148165faa56313cb00211e31c12bc" dependencies = [ "js-sys", "wasm-bindgen", diff --git a/src/Rust/vvs_font/src/error.rs b/src/Rust/vvs_font/src/error.rs index 00d4c894cf293e8b0f1b97540596a9975d526ba7..b7fc2308154d1620f73a225526f76b37305beb87 100644 --- a/src/Rust/vvs_font/src/error.rs +++ b/src/Rust/vvs_font/src/error.rs @@ -17,6 +17,9 @@ pub enum FontError { #[error("failed to outline glyph '{1}' for size {0}pt")] FailedToOutline(f64, char), + #[error("failed to scale glyph '{1}' for size {0}pt")] + FailedToScale(f64, char), + #[error("can't outline an empty string")] EmptyStringToOutline, } diff --git a/src/Rust/vvs_font/src/font.rs b/src/Rust/vvs_font/src/font.rs index fe18a2ee8277b54d5b589a6b463a7e2d4cb67cba..c38700d81ca1138b41ac5ff5781df1f660750c40 100644 --- a/src/Rust/vvs_font/src/font.rs +++ b/src/Rust/vvs_font/src/font.rs @@ -41,12 +41,10 @@ impl<'a> TryFrom<&'a [u8]> for Font<'a> { } } -impl<'a> Font<'a> { +impl Font<'_> { /// Get the general name of the font. pub fn name(&self) -> Result<String, FontError> { - self.face - .names() - .into_iter() + (self.face.names().into_iter()) .find(|name| name.name_id == ttf_parser::name_id::FAMILY && name.is_unicode()) .and_then(|name| name.to_string()) .ok_or(FontError::NoName) @@ -56,8 +54,7 @@ impl<'a> Font<'a> { pub fn family_names(&self) -> Vec<String> { let names = self.face.names(); let filter = [ttf_parser::name_id::POST_SCRIPT_NAME, ttf_parser::name_id::FULL_NAME]; - names - .into_iter() + (names.into_iter()) .flat_map(|name| (filter.contains(&name.name_id) && name.is_unicode()).then(|| name.to_string())) .flatten() .collect() @@ -65,23 +62,25 @@ impl<'a> Font<'a> { /// The the font types. pub fn font_types(&self) -> Vec<FontType> { - use FontType::*; + let face = &self.face; + let mut ret = [ - self.face.is_regular().then_some(Regular), - self.face.is_italic().then_some(Italic), - self.face.is_bold().then_some(Bold), - self.face.is_oblique().then_some(Oblique), - self.face.is_monospaced().then_some(Monospaced), - self.face.is_variable().then_some(Variable), + face.is_regular().then_some(FontType::Regular), + face.is_italic().then_some(FontType::Italic), + face.is_bold().then_some(FontType::Bold), + face.is_oblique().then_some(FontType::Oblique), + face.is_monospaced().then_some(FontType::Monospaced), + face.is_variable().then_some(FontType::Variable), ] .into_iter() .flatten() .chain(Some(match self.face.style() { - ttf_parser::Style::Normal => Regular, - ttf_parser::Style::Italic => Italic, - ttf_parser::Style::Oblique => Oblique, + ttf_parser::Style::Normal => FontType::Regular, + ttf_parser::Style::Italic => FontType::Italic, + ttf_parser::Style::Oblique => FontType::Oblique, })) .collect::<Vec<_>>(); + ret.sort(); ret.dedup(); ret @@ -95,35 +94,30 @@ impl<'a> Font<'a> { /// Outline a glyph with the specified pt size. pub fn outline_glyph(&self, pt: f64, glyph: char) -> Result<Rect, FontError> { - self.font - .outline_glyph( - self.font.glyph_id(glyph).with_scale( - self.font - .pt_to_px_scale(f64::clamp(pt, f32::MIN.into(), f32::MAX.into()) as f32) - .expect("failed to get the px_scale..."), - ), - ) - .map(|outlined| { - let ab_glyph::Rect { min, max } = outlined.px_bounds(); - Rect::new( - Point { x: min.x.trunc() as i64, y: min.y.trunc() as i64 }, - Point { x: max.x.trunc() as i64, y: max.y.trunc() as i64 }, - ) - }) - .ok_or(FontError::FailedToOutline(pt, glyph)) + let scaled_glyph = self.font.glyph_id(glyph).with_scale( + self.font + .pt_to_px_scale(f64::clamp(pt, f32::MIN.into(), f32::MAX.into()) as f32) + .ok_or(FontError::FailedToScale(pt, glyph))?, + ); + let ab_glyph::Rect { min, max } = self + .font + .outline_glyph(scaled_glyph) + .ok_or(FontError::FailedToOutline(pt, glyph))? + .px_bounds(); + Ok(Rect::new( + Point { x: min.x.trunc() as i64, y: min.y.trunc() as i64 }, + Point { x: max.x.trunc() as i64, y: max.y.trunc() as i64 }, + )) } /// Outline a string slice with the specified pt size. pub fn outline_str(&self, pt: f64, str: impl AsRef<str>) -> Result<Rect, FontError> { - let (rects, errs): (Vec<_>, Vec<_>) = str + let mut rects = str .as_ref() .chars() .map(|glyph| self.outline_glyph(pt, glyph)) - .partition(Result::is_ok); - if let Some(err) = errs.into_iter().next() { - return err; - } - let mut rects = rects.into_iter().map(Result::unwrap); + .collect::<Result<Vec<_>, _>>()? + .into_iter(); let first = rects.next().ok_or(FontError::EmptyStringToOutline)?; Ok(rects.fold(first, Rect::merge)) } diff --git a/src/Rust/vvs_lang/src/error_report.rs b/src/Rust/vvs_lang/src/error_report.rs index fcf28839ba6d54772d4881ff24e22b18709218f9..48e687e4b25865deb7468204a30aa75584ebd650 100644 --- a/src/Rust/vvs_lang/src/error_report.rs +++ b/src/Rust/vvs_lang/src/error_report.rs @@ -126,7 +126,7 @@ impl ErrorReport<'_> { } } -impl<'a> Default for ErrorReport<'a> { +impl Default for ErrorReport<'_> { fn default() -> Self { Self { files: SimpleFiles::new(), messages: Default::default(), id_cache: Default::default() } } diff --git a/src/Rust/vvs_lang/src/symbol_table.rs b/src/Rust/vvs_lang/src/symbol_table.rs index efe1a97e234da23ca2b54f4525800ed5a50ea08c..bc03ab54f6c32992aedd96505425afc348ebc52d 100644 --- a/src/Rust/vvs_lang/src/symbol_table.rs +++ b/src/Rust/vvs_lang/src/symbol_table.rs @@ -99,7 +99,7 @@ impl<'a, T: Clone> SymbolTable<'a, T, SymbolTableMutable> { } } -impl<'a, T: Clone, State> SymbolTable<'a, T, State> { +impl<T: Clone, State> SymbolTable<'_, T, State> { /// Get a variable/callback/function from this scope or any parent scope. pub fn get(&self, symbol: impl AsRef<str>) -> Option<&T> { self.symbols diff --git a/src/Rust/vvs_lib/src/lib.rs b/src/Rust/vvs_lib/src/lib.rs index e1e35aa4bc624695f3d17915d22802110103e2e5..2ebb398acc18e83ebaad5eebf75ffbd33d01468f 100644 --- a/src/Rust/vvs_lib/src/lib.rs +++ b/src/Rust/vvs_lib/src/lib.rs @@ -37,10 +37,7 @@ impl<'a> StringSlice<'a> { } } -impl<'a, S> From<S> for StringSlice<'a> -where - S: AsRef<str>, -{ +impl<S: AsRef<str>> From<S> for StringSlice<'_> { #[inline] fn from(value: S) -> Self { let value = value.as_ref(); diff --git a/src/Rust/vvs_llvm/src/bindings/builder.rs b/src/Rust/vvs_llvm/src/bindings/builder.rs index 37d4823281195720e20ca5023a41555dce9e64b7..6eaf94c9de1cb34692073666400d5cfa02945173 100644 --- a/src/Rust/vvs_llvm/src/bindings/builder.rs +++ b/src/Rust/vvs_llvm/src/bindings/builder.rs @@ -17,7 +17,7 @@ macro_rules! build { }; } -impl<'a> Builder<'a> { +impl Builder<'_> { /// Create a new builder. pub fn new(ctx: &Context) -> Self { unsafe { Self::from_ptr(LLVMCreateBuilderInContext(ctx.as_ptr())) } diff --git a/src/Rust/vvs_llvm/src/bindings/jit.rs b/src/Rust/vvs_llvm/src/bindings/jit.rs index 29506a042593d580a6dd94b65430683290c0796e..76ad8f54c00aac7eae6bbe1c4e895657212f22c2 100644 --- a/src/Rust/vvs_llvm/src/bindings/jit.rs +++ b/src/Rust/vvs_llvm/src/bindings/jit.rs @@ -67,7 +67,7 @@ impl JIT { let es = LLVMOrcLLJITGetExecutionSession(jit); let objl = LLVMOrcCreateRTDyldObjectLinkingLayerWithSectionMemoryManager(es); let irtl = LLVMOrcLLJITGetIRTransformLayer(jit); - let dylib = LLVMOrcExecutionSessionCreateBareJITDylib(es, b"<main>\0".as_ptr() as *const _); + let dylib = LLVMOrcExecutionSessionCreateBareJITDylib(es, c"<main>".as_ptr()); // Allow to search for symbols in the current process, only if they start with `VVRT`. let mut dg = ptr::null_mut(); diff --git a/src/Rust/vvs_parser/src/ast/options.rs b/src/Rust/vvs_parser/src/ast/options.rs index f7b6f730a83e9934919c42d4c64422defd91d7a7..84c127d9e6166a63f6f7dfdbb177eeba910e594a 100644 --- a/src/Rust/vvs_parser/src/ast/options.rs +++ b/src/Rust/vvs_parser/src/ast/options.rs @@ -70,7 +70,7 @@ impl<'a> OptionTableSectionMut<'a> { } } -impl<'a> Iterator for OptionTableSectionMut<'a> { +impl Iterator for OptionTableSectionMut<'_> { type Item = (ShortString, Expression); fn next(&mut self) -> Option<Self::Item> { @@ -78,7 +78,7 @@ impl<'a> Iterator for OptionTableSectionMut<'a> { } } -impl<'a> Extend<(ShortString, Expression)> for OptionTableSectionMut<'a> { +impl Extend<(ShortString, Expression)> for OptionTableSectionMut<'_> { fn extend<T: IntoIterator<Item = (ShortString, Expression)>>(&mut self, iter: T) { self.options.extend(iter) } diff --git a/src/Rust/vvs_parser/src/node.rs b/src/Rust/vvs_parser/src/node.rs index dfe90349e1c25e5fc2e6243c69b1910eeeb50916..e00139d23b0d49423432d9898e44db7bc9047efa 100644 --- a/src/Rust/vvs_parser/src/node.rs +++ b/src/Rust/vvs_parser/src/node.rs @@ -84,7 +84,7 @@ impl<'a> Iterator for Tokens<'a> { } } -impl<'a> DoubleEndedIterator for Tokens<'a> { +impl DoubleEndedIterator for Tokens<'_> { fn next_back(&mut self) -> Option<Self::Item> { if self.items.is_empty() { return None; diff --git a/src/Rust/vvs_runtime_types/src/mangle.rs b/src/Rust/vvs_runtime_types/src/mangle.rs index 9e3bb2a5a54f0fd07e664649e62fb84810576801..2a8577084e7266e59ca6a524ed1fcc10bb3bb2d7 100644 --- a/src/Rust/vvs_runtime_types/src/mangle.rs +++ b/src/Rust/vvs_runtime_types/src/mangle.rs @@ -86,7 +86,7 @@ impl<'a> VVRTSymbol<'a> { } } -impl<'a> std::fmt::Display for VVRTSymbol<'a> { +impl std::fmt::Display for VVRTSymbol<'_> { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { let Self { sym, module, name, .. } = self; match sym { diff --git a/src/Rust/vvs_runtime_types/src/vvll.rs b/src/Rust/vvs_runtime_types/src/vvll.rs index 5d38dffed98d6db725a812acd0f41d8e102f1bdf..5fb849dd2a79f9e3c470b02b0d5dc5fea19c374c 100644 --- a/src/Rust/vvs_runtime_types/src/vvll.rs +++ b/src/Rust/vvs_runtime_types/src/vvll.rs @@ -1,7 +1,10 @@ #![allow(non_snake_case)] use hashbrown::HashSet; -use std::sync::OnceLock; +use std::{ + borrow::Borrow, + sync::{OnceLock, RwLock}, +}; use vvs_llvm::sys::*; #[derive(Debug, Clone, Copy, PartialEq, Eq)] @@ -26,11 +29,22 @@ pub trait LLVMExported { /// - All the managed types must have been exported into at least one module /// - This function is not thread-safe pub unsafe fn LLVMTypeIsManaged(ty: LLVMTypeRef) -> bool { - managed_types().contains(&ty) -} + /// Don't use this, just to allow for [LLVMTypeIsManaged] to exists… + #[derive(Eq, PartialEq, Hash)] + struct LLVMTypeRefWrapper(LLVMTypeRef); + + unsafe impl Send for LLVMTypeRefWrapper {} + unsafe impl Sync for LLVMTypeRefWrapper {} + impl Borrow<LLVMTypeRef> for LLVMTypeRefWrapper { + fn borrow(&self) -> &LLVMTypeRef { + &self.0 + } + } + + static MANAGED_TYPES: OnceLock<RwLock<HashSet<LLVMTypeRefWrapper>>> = OnceLock::new(); -unsafe fn managed_types() -> &'static mut HashSet<LLVMTypeRef> { - static mut MANAGED_TYPES: OnceLock<HashSet<LLVMTypeRef>> = OnceLock::new(); - MANAGED_TYPES.get_or_init(HashSet::new); - MANAGED_TYPES.get_mut().expect(" should have been created") + MANAGED_TYPES + .get_or_init(RwLock::default) + .read() + .map_or(false, |types| types.contains(&ty)) } diff --git a/src/Rust/vvs_xdg/src/config.rs b/src/Rust/vvs_xdg/src/config.rs index c165222158b7227363055f4148b7e86870ca5fe2..21c2e4705faf9b2eca07766627b39748bca872d2 100644 --- a/src/Rust/vvs_xdg/src/config.rs +++ b/src/Rust/vvs_xdg/src/config.rs @@ -199,7 +199,7 @@ impl<'a, Format: XDGConfigFileSerde, Merged: private_merged::Sealed> XDGConfig<' } } -impl<'a, Format: XDGConfigFileSerde + Default, Merged: private_merged::Sealed> XDGConfig<'a, Format, Merged> { +impl<Format: XDGConfigFileSerde + Default, Merged: private_merged::Sealed> XDGConfig<'_, Format, Merged> { /// Try to read the config files and deserialize them. If an error is encountred at any point, /// log it and return the provided default if the merge was not silent, skip the file if it was /// silent. If needed the default value is written on the disk, note that this operation may @@ -213,7 +213,7 @@ impl<'a, Format: XDGConfigFileSerde + Default, Merged: private_merged::Sealed> X } } -impl<'a, Format: XDGConfigFileSerde> XDGConfig<'a, Format, XDGConfigFirst> { +impl<Format: XDGConfigFileSerde> XDGConfig<'_, Format, XDGConfigFirst> { /// Write a value to the default config file location, the one with the higher priority /// (usually the user's one) fn write(&self, value: &Format) -> Result<(), XDGError> { diff --git a/src/Rust/vvs_xdg/src/paths.rs b/src/Rust/vvs_xdg/src/paths.rs index 326348c0632db12e42a698c5cb94b0c8744de26d..64e7d8f5bbf473b2a1800c5a6d135408fdc1a7cb 100644 --- a/src/Rust/vvs_xdg/src/paths.rs +++ b/src/Rust/vvs_xdg/src/paths.rs @@ -150,20 +150,14 @@ impl<'a> std::iter::Extend<&'a MaybeFolderList> for MaybeFolderList { } } -impl<'a, S> From<S> for MaybeFolderList -where - S: AsRef<str> + 'a, -{ +impl<S: AsRef<str>> From<S> for MaybeFolderList { #[inline] fn from(value: S) -> Self { MaybeFolderList::Folder(PathBuf::from(value.as_ref())) } } -impl<'a, P> FromIterator<P> for MaybeFolderList -where - P: AsRef<Path> + 'a, -{ +impl<P: AsRef<Path>> FromIterator<P> for MaybeFolderList { #[inline] fn from_iter<T: IntoIterator<Item = P>>(iter: T) -> Self { let mut folders = iter.into_iter();