依赖库是否编译

一个项目依赖性多少库,可以从这个视角来看:项目包含feature,feature依赖库, 不想依赖某些库,就disable对应的feature.

[features]
default = ["random"]
random = ["dep:rand"]

[dependencies]
rand = { version = "0.8", optional = true}

dep:rand表示random feature关联了rand,如果不启用random,编译时不会将rand包含进去. 要实现这个,rand也需要通过optional指明是可选的.

crate的optional + feature的dep:crate + 编译时的feature指定, 就可以决定依赖库是否编译.