cyclonedx_bom/
utilities.rs1use crate::errors::BomError;
2use std::convert::TryFrom;
3
4pub(crate) fn convert_optional_vec<A, B: From<A>>(value: Option<Vec<A>>) -> Option<Vec<B>> {
8    value.map(convert_vec)
9}
10
11pub(crate) fn convert_optional<A, B: From<A>>(value: Option<A>) -> Option<B> {
18    value.map(std::convert::Into::into)
19}
20
21pub(crate) fn try_convert_optional<A, B: TryFrom<A>>(
22    value: Option<A>,
23) -> Result<Option<B>, BomError>
24where
25    BomError: From<B::Error>,
26{
27    value.map(B::try_from).transpose().map_err(BomError::from)
28}
29
30pub(crate) fn convert_vec<A, B: From<A>>(value: Vec<A>) -> Vec<B> {
31    value.into_iter().map(std::convert::Into::into).collect()
32}
33
34pub(crate) fn try_convert_vec<A, B: TryFrom<A, Error = BomError>>(
35    value: Vec<A>,
36) -> Result<Vec<B>, BomError> {
37    value
38        .into_iter()
39        .map(std::convert::TryInto::try_into)
40        .collect()
41}
42
43