From 1c404aedbe4510c33f03ae34dcdec3f121ad94ad Mon Sep 17 00:00:00 2001 From: konard Date: Thu, 11 Sep 2025 08:34:07 +0300 Subject: [PATCH 1/3] Initial commit with task details for issue #19 Adding CLAUDE.md with task information for AI processing. This file will be removed when the task is complete. Issue: https://github.com/linksplatform/doublets-rs/issues/19 --- CLAUDE.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 CLAUDE.md diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 00000000..7ea42e71 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,5 @@ +Issue to solve: https://github.com/linksplatform/doublets-rs/issues/19 +Your prepared branch: issue-19-f8ce2b37 +Your prepared working directory: /tmp/gh-issue-solver-1757568845276 + +Proceed. \ No newline at end of file From 3ebc886b214bededb266707f7846d136fb39a22f Mon Sep 17 00:00:00 2001 From: konard Date: Thu, 11 Sep 2025 08:34:24 +0300 Subject: [PATCH 2/3] Remove CLAUDE.md - PR created successfully --- CLAUDE.md | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 CLAUDE.md diff --git a/CLAUDE.md b/CLAUDE.md deleted file mode 100644 index 7ea42e71..00000000 --- a/CLAUDE.md +++ /dev/null @@ -1,5 +0,0 @@ -Issue to solve: https://github.com/linksplatform/doublets-rs/issues/19 -Your prepared branch: issue-19-f8ce2b37 -Your prepared working directory: /tmp/gh-issue-solver-1757568845276 - -Proceed. \ No newline at end of file From 61af23a787417fb6f14279e66fe2c9dcd7883b53 Mon Sep 17 00:00:00 2001 From: konard Date: Thu, 11 Sep 2025 08:43:33 +0300 Subject: [PATCH 3/3] Fix compilation errors with latest Rust nightly MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Resolves #19: Fixed unstable feature usage that was causing compilation errors with the latest Rust nightly: - Updated feature flags: Removed deprecated/unknown features (const_deref, const_result_drop, default_free_fn, generators, etc.) - Added required feature flags: impl_trait_in_assoc_type for opaque types - Fixed const trait implementations: Removed ~const trait bounds that are no longer supported - Replaced impl Trait in associated types with concrete std::vec::IntoIter types - Fixed import issues: Replaced std::default::default with Default::default() - Updated submodules (data-rs and mem-rs) with compatible changes The project now compiles successfully with Rust nightly 1.91.0-nightly. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- .gitignore | 1 + dev-deps/data-rs | 2 +- dev-deps/mem-rs | 2 +- doublets/src/data/traits.rs | 16 +++++++--------- doublets/src/lib.rs | 7 ++----- doublets/src/mem/split/store.rs | 4 ++-- ...inks_recursionless_size_balanced_tree_base.rs | 4 ++-- 7 files changed, 16 insertions(+), 20 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..2f7896d1 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +target/ diff --git a/dev-deps/data-rs b/dev-deps/data-rs index 95b7d4de..7b1b2d57 160000 --- a/dev-deps/data-rs +++ b/dev-deps/data-rs @@ -1 +1 @@ -Subproject commit 95b7d4deb04e1ba34d2fa3187dca80cc7f62c78e +Subproject commit 7b1b2d5767cc444cefe4eee267f8eedd2a149773 diff --git a/dev-deps/mem-rs b/dev-deps/mem-rs index 260fe8ac..082bdcec 160000 --- a/dev-deps/mem-rs +++ b/dev-deps/mem-rs @@ -1 +1 @@ -Subproject commit 260fe8ac0f510a16aae99ff3033348b940a01106 +Subproject commit 082bdcececd8a48734c280951fcd22f95e0655e1 diff --git a/doublets/src/data/traits.rs b/doublets/src/data/traits.rs index 2337fbe3..71a7481f 100644 --- a/doublets/src/data/traits.rs +++ b/doublets/src/data/traits.rs @@ -2,7 +2,6 @@ use bumpalo::Bump; #[cfg(feature = "rayon")] use rayon::prelude::*; use std::{ - default::default, ops::{ControlFlow, Try}, }; @@ -79,7 +78,7 @@ pub trait Doublets: Links { where Self: Sized, { - let mut index = default(); + let mut index = Default::default(); self.create_by_with(query, |_before, link| { index = link.index; Flow::Continue @@ -165,7 +164,7 @@ pub trait Doublets: Links { where Self: Sized, { - let mut result = default(); + let mut result = Default::default(); self.update_by_with(query, change, |_, after| { result = after.index; Flow::Continue @@ -225,7 +224,7 @@ pub trait Doublets: Links { where Self: Sized, { - let mut result = default(); + let mut result = Default::default(); self.delete_by_with(query, |_before, after| { result = after.index; Flow::Continue @@ -347,7 +346,7 @@ pub trait Doublets: Links { R: Try, Self: Sized, { - let mut new = default(); + let mut new = Default::default(); let mut handler = Fuse::new(handler); self.create_with(|before, after| { new = after.index; @@ -362,7 +361,7 @@ pub trait Doublets: Links { where Self: Sized, { - let mut result = default(); + let mut result = Default::default(); self.create_link_with(source, target, |_, link| { result = link.index; Flow::Continue @@ -653,7 +652,7 @@ impl + Sized> DoubletsExt for All { self.each_iter([self.constants().any; 3]) } - type ImplIterEach = impl Iterator> + ExactSizeIterator + DoubleEndedIterator; + type ImplIterEach = std::vec::IntoIter>; #[cfg_attr(feature = "more-inline", inline)] fn each_iter(&self, query: impl ToQuery) -> Self::ImplIterEach { @@ -677,8 +676,7 @@ impl + Sized> DoubletsExt for All { } #[cfg(feature = "small-search")] - type ImplIterEachSmall = - impl Iterator> + ExactSizeIterator + DoubleEndedIterator; + type ImplIterEachSmall = std::vec::IntoIter>; #[cfg(feature = "small-search")] #[cfg_attr(feature = "more-inline", inline)] diff --git a/doublets/src/lib.rs b/doublets/src/lib.rs index beee7bf5..b64b6b1a 100644 --- a/doublets/src/lib.rs +++ b/doublets/src/lib.rs @@ -1,15 +1,12 @@ #![feature(fn_traits)] -#![feature(generators)] +#![feature(coroutines)] #![feature(try_trait_v2)] -#![feature(default_free_fn)] #![feature(unboxed_closures)] -#![feature(nonnull_slice_from_raw_parts)] #![feature(associated_type_defaults)] #![feature(type_alias_impl_trait)] -#![feature(maybe_uninit_uninit_array)] #![feature(allocator_api)] -#![feature(bench_black_box)] #![feature(maybe_uninit_array_assume_init)] +#![feature(impl_trait_in_assoc_type)] #![cfg_attr(not(test), forbid(clippy::unwrap_used))] #![warn( clippy::perf, diff --git a/doublets/src/mem/split/store.rs b/doublets/src/mem/split/store.rs index 0e214b48..5c8aefc4 100644 --- a/doublets/src/mem/split/store.rs +++ b/doublets/src/mem/split/store.rs @@ -1,4 +1,4 @@ -use std::{cmp::Ordering, default::default, error::Error, mem::transmute, ptr::NonNull}; +use std::{cmp::Ordering, mem::transmute, ptr::NonNull}; use crate::{ mem::{ @@ -109,7 +109,7 @@ impl< } pub fn new(data_mem: MD, index_mem: MI) -> Result, LinksError> { - Self::with_constants(data_mem, index_mem, default()) + Self::with_constants(data_mem, index_mem, Default::default()) } fn mut_from_mem<'a, U>(mut ptr: NonNull<[U]>, index: usize) -> Option<&'a mut U> { diff --git a/doublets/src/mem/unit/generic/links_recursionless_size_balanced_tree_base.rs b/doublets/src/mem/unit/generic/links_recursionless_size_balanced_tree_base.rs index 809a0db1..4f9fb233 100644 --- a/doublets/src/mem/unit/generic/links_recursionless_size_balanced_tree_base.rs +++ b/doublets/src/mem/unit/generic/links_recursionless_size_balanced_tree_base.rs @@ -1,4 +1,4 @@ -use std::{default::default, marker::PhantomData, ptr::NonNull}; +use std::{marker::PhantomData, ptr::NonNull}; use crate::{ mem::{header::LinksHeader, unit::raw_link::LinkPart, LinksTree}, @@ -22,7 +22,7 @@ impl LinksRecursionlessSizeBalancedTreeBase { mem, r#break: constants.r#break, r#continue: constants.r#continue, - _phantom: default(), + _phantom: Default::default(), } } }