Skip to main content

## acquire

# Function acquire

Source

    fn acquire(
        gctx: &GlobalContext,
        msg: &str,
        path: &Path,
        lock_try: &dyn Fn() -> Result<(), TryLockError>,
        lock_block: &dyn Fn() -> Result<()>,
    ) -> CargoResult<()>

Expand description

Acquires a lock on a file in a “nice” manner.

Almost all long-running blocking actions in Cargo have a status message associated with them as we’re not sure how long they’ll take. Whenever a conflicted file lock happens, this is the case (we’re not sure when the lock will be released).

This function will acquire the lock on a `path`, printing out a nice message to the console if we have to wait for it. It will first attempt to use `try` to acquire a lock on the crate, and in the case of contention it will emit a status message based on `msg` to `GlobalContext`’s shell, and then use `block` to block waiting to acquire a lock.

Returns an error if the lock could not be acquired or if any error other than a contention error happens.