From e30c24b5bfa6aa8e1782cfe9043c50b80f403222 Mon Sep 17 00:00:00 2001 From: Louis Dureuil Date: Tue, 1 Jul 2025 23:52:44 +0200 Subject: [PATCH] Prompt: relax lifetime constraints --- crates/milli/src/prompt/document.rs | 11 ++++++----- crates/milli/src/prompt/fields.rs | 24 ++++++++++++------------ crates/milli/src/prompt/mod.rs | 4 ++-- 3 files changed, 20 insertions(+), 19 deletions(-) diff --git a/crates/milli/src/prompt/document.rs b/crates/milli/src/prompt/document.rs index b00c4cb42..1125c8fba 100644 --- a/crates/milli/src/prompt/document.rs +++ b/crates/milli/src/prompt/document.rs @@ -144,18 +144,19 @@ impl ValueView for Document<'_> { use crate::update::new::document::Document as DocumentTrait; #[derive(Debug)] -pub struct ParseableDocument<'doc, D> { +pub struct ParseableDocument<'a, 'doc, D: DocumentTrait<'a> + Debug> { document: D, doc_alloc: &'doc Bump, + _marker: std::marker::PhantomData<&'a ()>, } -impl<'doc, D> ParseableDocument<'doc, D> { +impl<'a, 'doc, D: DocumentTrait<'a> + Debug> ParseableDocument<'a, 'doc, D> { pub fn new(document: D, doc_alloc: &'doc Bump) -> Self { - Self { document, doc_alloc } + Self { document, doc_alloc, _marker: std::marker::PhantomData } } } -impl<'doc, D: DocumentTrait<'doc> + Debug> ObjectView for ParseableDocument<'doc, D> { +impl<'a, D: DocumentTrait<'a> + Debug> ObjectView for ParseableDocument<'a, '_, D> { fn as_value(&self) -> &dyn ValueView { self } @@ -195,7 +196,7 @@ impl<'doc, D: DocumentTrait<'doc> + Debug> ObjectView for ParseableDocument<'doc } } -impl<'doc, D: DocumentTrait<'doc> + Debug> ValueView for ParseableDocument<'doc, D> { +impl<'a, D: DocumentTrait<'a> + Debug> ValueView for ParseableDocument<'a, '_, D> { fn as_debug(&self) -> &dyn Debug { self } diff --git a/crates/milli/src/prompt/fields.rs b/crates/milli/src/prompt/fields.rs index 8d006f0b7..5a842268c 100644 --- a/crates/milli/src/prompt/fields.rs +++ b/crates/milli/src/prompt/fields.rs @@ -121,10 +121,10 @@ impl ObjectView for FieldValue<'_, D> { pub struct OwnedFields<'a, D: ObjectView>(Vec>); #[derive(Debug)] -pub struct BorrowedFields<'a, 'map, D: ObjectView> { +pub struct BorrowedFields<'a, 'doc, 'map, D: ObjectView> { document: &'a D, field_id_map: &'a RefCell>, - doc_alloc: &'a Bump, + doc_alloc: &'doc Bump, } impl<'a, D: ObjectView> OwnedFields<'a, D> { @@ -138,11 +138,11 @@ impl<'a, D: ObjectView> OwnedFields<'a, D> { } } -impl<'a, 'map, D: ObjectView> BorrowedFields<'a, 'map, D> { +impl<'a, 'doc, 'map, D: ObjectView> BorrowedFields<'a, 'doc, 'map, D> { pub fn new( document: &'a D, field_id_map: &'a RefCell>, - doc_alloc: &'a Bump, + doc_alloc: &'doc Bump, ) -> Self { Self { document, field_id_map, doc_alloc } } @@ -170,7 +170,7 @@ impl ArrayView for OwnedFields<'_, D> { } } -impl ArrayView for BorrowedFields<'_, '_, D> { +impl ArrayView for BorrowedFields<'_, '_, '_, D> { fn as_value(&self) -> &dyn ValueView { self } @@ -212,7 +212,7 @@ impl ArrayView for BorrowedFields<'_, '_, D> { } } -impl ValueView for BorrowedFields<'_, '_, D> { +impl ValueView for BorrowedFields<'_, '_, '_, D> { fn as_debug(&self) -> &dyn std::fmt::Debug { self } @@ -288,11 +288,11 @@ impl ValueView for OwnedFields<'_, D> { } } -struct ArraySource<'a, 'map, D: ObjectView> { - s: &'a BorrowedFields<'a, 'map, D>, +struct ArraySource<'a, 'doc, 'map, D: ObjectView> { + s: &'a BorrowedFields<'a, 'doc, 'map, D>, } -impl fmt::Display for ArraySource<'_, '_, D> { +impl fmt::Display for ArraySource<'_, '_, '_, D> { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { write!(f, "[")?; for item in self.s.values() { @@ -303,11 +303,11 @@ impl fmt::Display for ArraySource<'_, '_, D> { } } -struct ArrayRender<'a, 'map, D: ObjectView> { - s: &'a BorrowedFields<'a, 'map, D>, +struct ArrayRender<'a, 'doc, 'map, D: ObjectView> { + s: &'a BorrowedFields<'a, 'doc, 'map, D>, } -impl fmt::Display for ArrayRender<'_, '_, D> { +impl fmt::Display for ArrayRender<'_, '_, '_, D> { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { for item in self.s.values() { write!(f, "{}", item.render())?; diff --git a/crates/milli/src/prompt/mod.rs b/crates/milli/src/prompt/mod.rs index f1b4ddf89..03b20a090 100644 --- a/crates/milli/src/prompt/mod.rs +++ b/crates/milli/src/prompt/mod.rs @@ -107,8 +107,8 @@ impl Prompt { } pub fn render_document< - 'a, // lifetime of the borrow of the document - 'doc: 'a, // lifetime of the allocator, will live for an entire chunk of documents + 'a, // lifetime of the borrow of the document + 'doc, // lifetime of the allocator, will live for an entire chunk of documents >( &self, external_docid: &str,