Comments (3)
Thinking this should actually just be a function that returns a 3 tuple of the (instances, indexes, index)
from mimir.
The problem I am running into with minimizing the boilerplate:
fn acquire_locks<'a>(
instance_dir: &'a String,
index_name: &'a String,
) -> Result<(
RwLockReadGuard<'a, HashMap<String, Instance>>,
RwLockReadGuard<'a, HashMap<String, Mutex<Index>>>,
MutexGuard<'a, Index>,
)> {
ensure_index_initialized(instance_dir, index_name)?;
let instances = INSTANCES.read();
let indexes = instances.get(instance_dir).unwrap().indexes.read();
let index = indexes.get(index_name).unwrap().lock();
Ok((instances, indexes, index))
}
Doesn't work because the local variables cannot be declared with lifetimes, which is needed to return them.
I only started learning Rust recently so I am not sure how to fix this. If someone has a better idea, I am all ears. The only idea I have right now is a proc macro to generate all the boilerplate in one line but I really dislike this solution (but it is still better than the current implementation...).
from mimir.
I think we should end up just making a proc macro with https://docs.rs/quote/latest/quote/
from mimir.
Related Issues (20)
- Running tests fails - possible config issue HOT 23
- Consider supporting macOS App Sandbox HOT 6
- Dart 3 (Macros & Native Assets) Migration HOT 1
- Upgrade repo to support Melos v3
- Expose Meilisearch's geo-based search
- ID issue HOT 5
- `FfiException(RESULT_ERROR, Permission denied (os error 13), null)` on Android HOT 22
- Explanation of capabilities HOT 5
- Can't get instance. HOT 8
- Add `IS NULL` and `IS EMPTY` operators from Meilisearch 1.2
- Delete documents by filter from Meilisearch 1.2 HOT 1
- Do getAllDocuments and/or deleteDocument throw exceptions when they fail? HOT 1
- Adding this package increases the size of the Android app by 160.5 MB HOT 3
- Unable to get it to work on New Flutter application HOT 1
- Cannot allocate memory (os error 12) HOT 19
- Switch to redb backend
- Example should not depend on other packages HOT 3
- Ios run error HOT 17
- Experiment with manual FFI and protobuf HOT 2
- Problem with project building HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mimir.