|
1 | 1 | # Files
|
2 | 2 |
|
3 |
| -This chapter gives some pointers on where to start looking at Cargo's on-disk |
4 |
| -data file structures. |
5 |
| - |
6 |
| -* [`Layout`] is the abstraction for the `target` directory. It handles locking |
7 |
| - the target directory, and providing paths to the parts inside. There is a |
8 |
| - separate `Layout` for each "target". |
9 |
| -* [`Resolve`] contains the contents of the `Cargo.lock` file. See the [`encode`] |
10 |
| - module for the different `Cargo.lock` formats. |
11 |
| -* [`TomlManifest`] contains the contents of the `Cargo.toml` file. It is translated |
12 |
| - to a [`Manifest`] object for some simplification, and the `Manifest` is stored |
13 |
| - in a [`Package`]. |
14 |
| -* The [`fingerprint`] module deals with the fingerprint information stored in |
15 |
| - `target/debug/.fingerprint`. This tracks whether or not a crate needs to be |
16 |
| - rebuilt. |
17 |
| -* `cargo install` tracks its installed files with some metadata in |
18 |
| - `$CARGO_HOME`. The metadata is managed in the |
19 |
| - [`common_for_install_and_uninstall`] module. |
20 |
| -* Git sources are cached in `$CARGO_HOME/git`. The code for this cache is in |
21 |
| - the [`git`] source module. |
22 |
| -* Registries are cached in `$CARGO_HOME/registry`. There are three parts, the |
23 |
| - index, the compressed `.crate` files, and the extracted sources of those |
24 |
| - crate files. |
25 |
| - * Management of the registry cache can be found in the [`registry`] source |
26 |
| - module. Note that this includes an on-disk cache as an optimization for |
27 |
| - accessing the git repository. |
28 |
| - * Saving of `.crate` files is handled by the [`RemoteRegistry`]. |
29 |
| - * Extraction of `.crate` files is handled by the [`RegistrySource`]. |
30 |
| - * There is a lock for the package cache. Code must be careful, because |
31 |
| - this lock must be obtained manually. See |
32 |
| - [`Config::acquire_package_cache_lock`]. |
33 |
| - |
34 |
| -[`Layout`]: https://github.com/rust-lang/cargo/blob/master/src/cargo/core/compiler/layout.rs |
35 |
| -[`Resolve`]: https://github.com/rust-lang/cargo/blob/master/src/cargo/core/resolver/resolve.rs |
36 |
| -[`encode`]: https://github.com/rust-lang/cargo/blob/master/src/cargo/core/resolver/encode.rs |
37 |
| -[`TomlManifest`]: https://github.com/rust-lang/cargo/blob/master/src/cargo/util/toml/mod.rs |
38 |
| -[`Manifest`]: https://github.com/rust-lang/cargo/blob/master/src/cargo/core/manifest.rs |
39 |
| -[`Package`]: https://github.com/rust-lang/cargo/blob/master/src/cargo/core/package.rs |
40 |
| -[`common_for_install_and_uninstall`]: https://github.com/rust-lang/cargo/blob/master/src/cargo/ops/common_for_install_and_uninstall.rs |
41 |
| -[`git`]: https://github.com/rust-lang/cargo/tree/master/src/cargo/sources/git |
42 |
| -[`registry`]: https://github.com/rust-lang/cargo/blob/master/src/cargo/sources/registry/mod.rs |
43 |
| -[`RemoteRegistry`]: https://github.com/rust-lang/cargo/blob/master/src/cargo/sources/registry/remote.rs |
44 |
| -[`RegistrySource`]: https://github.com/rust-lang/cargo/blob/master/src/cargo/sources/registry/mod.rs |
45 |
| -[`Config::acquire_package_cache_lock`]: https://github.com/rust-lang/cargo/blob/e4b65bdc80f2a293447f2f6a808fa7c84bf9a357/src/cargo/util/config/mod.rs#L1261-L1266 |
| 3 | +See [nightly docs](https://doc.rust-lang.org/nightly/nightly-rustc/cargo/index.html) |
46 | 4 |
|
47 | 5 | ## Filesystems
|
48 | 6 |
|
|
0 commit comments