pub enum BuildpackDescriptor<BM> {
Single(SingleBuildpackDescriptor<BM>),
Meta(MetaBuildpackDescriptor<BM>),
}Expand description
Data structures for the Buildpack descriptor (buildpack.toml).
For parsing of buildpack.toml files when support for multiple types of buildpack is required.
When a specific buildpack type is expected, use SingleBuildpackDescriptor or MetaBuildpackDescriptor directly instead,
since it allows for more detailed error messages if parsing fails.
Example:
use libcnb_data::buildpack::BuildpackDescriptor;
let toml_str = r#"
api = "0.8"
[buildpack]
id = "foo/bar"
name = "Bar Buildpack"
version = "0.0.1"
homepage = "https://www.foo.com/bar"
clear-env = false
description = "A buildpack for Foo Bar"
keywords = ["foo"]
[[buildpack.licenses]]
type = "BSD-3-Clause"
[[stacks]]
id = "*"
"#;
let buildpack_descriptor = toml::from_str::<BuildpackDescriptor<Option<toml::value::Table>>>(toml_str).expect("buildpack.toml did not match a known type!");
match buildpack_descriptor {
BuildpackDescriptor::Single(buildpack) => println!("Found buildpack: {}", buildpack.buildpack.id),
BuildpackDescriptor::Meta(buildpack) => println!("Found meta-buildpack: {}", buildpack.buildpack.id),
};Variants§
Single(SingleBuildpackDescriptor<BM>)
Meta(MetaBuildpackDescriptor<BM>)
Trait Implementations§
source§impl<BM: Debug> Debug for BuildpackDescriptor<BM>
impl<BM: Debug> Debug for BuildpackDescriptor<BM>
source§impl<'de, BM> Deserialize<'de> for BuildpackDescriptor<BM>where
BM: Deserialize<'de>,
impl<'de, BM> Deserialize<'de> for BuildpackDescriptor<BM>where
BM: Deserialize<'de>,
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more