# Set up Rust debugger code runner tasks \(\#27571\) · gitcafe/zed

[View on GitCafe](https://git.cafe/gitcafe/zed/commit/8add90d7cbc26727021245f50021bc418fd85841)

Repository: [gitcafe/zed](https://git.cafe/gitcafe/zed)

Visibility: public

Requested revision: 8add90d7cbc26727021245f50021bc418fd85841

Requested commit: 8add90d7cbc26727021245f50021bc418fd85841

Commit: 8add90d7cbc26727021245f50021bc418fd85841

Tree: 682fd3abc69439f6e495b93f51fc68b7fec9c24a

Author: Anthony Eid

Committer: GitHub

## Message

```
Set up Rust debugger code runner tasks (#27571)

## Summary 
This PR starts the process of adding debug task locators to Zed's
debugger system. A task locator is a secondary resolution phase that
allows a debug task to run a command before starting a debug session and
then uses the output of the run command to configure itself.

Locators are most applicable when debugging a compiled language but will
be helpful for any language as well.

## Architecture

At a high level, this works by adding a debug task queue to `Workspace`.
Which add's a debug configuration associated with a `TaskId` whenever a
resolved task with a debug config is added to `TaskInventory`'s queue.
Then, when the `SpawnInTerminal` task finishes running, it emits its
task_id and the result of the ran task.

When a ran task exits successfully, `Workspace` tells `Project` to start
a debug session using its stored debug config, then `DapStore` queries
the `LocatorStore` to configure the debug configuration if it has a
valid locator argument.

Release Notes:

- N/A
```

## Parents

- [141a6c3915f9d73c59459c51e2c1d55fcc00ff7f](https://git.cafe/gitcafe/zed/commit/141a6c3915f9d73c59459c51e2c1d55fcc00ff7f?format=markdown)

[Source at this commit](https://git.cafe/gitcafe/zed/tree/8add90d7cbc26727021245f50021bc418fd85841?format=markdown)
