Giter VIP home page Giter VIP logo

Comments (3)

GregoryConrad avatar GregoryConrad commented on May 13, 2024

Thinking this should actually just be a function that returns a 3 tuple of the (instances, indexes, index)

from mimir.

GregoryConrad avatar GregoryConrad commented on May 13, 2024

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.

GregoryConrad avatar GregoryConrad commented on May 13, 2024

I think we should end up just making a proc macro with https://docs.rs/quote/latest/quote/

from mimir.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.