一个项目依赖性多少库,可以从这个视角来看:项目包含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指定,
就可以决定依赖库是否编译.