Crates.io | cratesio-placeholder-package |
lib.rs | cratesio-placeholder-package |
version | 0.0.3-f |
source | src |
created_at | 2022-04-26 12:58:28.344361 |
updated_at | 2022-04-28 19:35:35.558827 |
description | A placeholder package intended to be overridden by `path =` or `git =` dependencies |
homepage | |
repository | |
max_upload_size | |
id | 575366 |
size | 12,608 |
::cratesio-placeholder-package
If there is nothing in a crate, then a fortiori, there is nothing wrong with it either!
If you depend on a crate and it is empty, did you really depend on that crate?
Sometimes you may want to publish a crate having a private / git / local dependency, which is useful for local or experimental development stuff, but which prevents your crate from being published.
In that case, you can use this hack empty placeholder package in its stead:
# Cargo.toml
[dependencies.your-crate-proxy]
# What public / crates.io users will see/use:
package = "cratesio-placeholder-package"
version = "=0.0.0"
# What `path` dependents will use
path = "path/to/your-crate-proxy"
and then have a your-crate-proxy
crate, at version 0.0.0
, somewhere in your
private project layout, which correctly depends on the other private stuff you
may need.
# path/to/your-crate-proxy/Cargo.toml
[package]
name = "cratesio-placeholder-package"
version = "0.0.0"
[dependencies]
# the real private dependency(ies)
your-crate.path = "private/your-crate"
feature
sSometimes, you may also want to proxy features from the frontend to your private dependency / to transitively enable feature from the private dependency.
In order to do that, such features will need to be proxied through
this cratesio-placeholder-package
Hence why this package also features a total of 26 placeholder features
(placeholder-feature-a
, placeholder-feature-b
, …, placeholder-feature-z
)
which you can use to achieve proper feature transitivity:
# Cargo.toml
[features]
foo = ["your-crate-proxy/placeholder-feature-a"]
[dependencies.your-crate-proxy]
# What public / crates.io users will see/use:
package = "cratesio-placeholder-package"
version = "=0.0.0"
# What `path` dependents will use
path = "path/to/your-crate-proxy"
+
# path/to/your-crate-proxy/Cargo.toml
[package]
name = "cratesio-placeholder-package"
version = "0.0.0"
[dependencies]
# the real private dependency(ies)
your-crate.path = "private/your-crate"
[features]
placeholder-feature-a = ["your-crate/foo"]