in sdk/core/azure_core_amqp/src/fe2o3/value.rs [181:231]
fn from(value: AmqpValue) -> Self {
match value {
AmqpValue::Null => fe2o3_amqp_types::primitives::Value::Null,
AmqpValue::Boolean(b) => fe2o3_amqp_types::primitives::Value::Bool(b),
AmqpValue::UByte(b) => fe2o3_amqp_types::primitives::Value::Ubyte(b),
AmqpValue::UShort(s) => fe2o3_amqp_types::primitives::Value::Ushort(s),
AmqpValue::UInt(i) => fe2o3_amqp_types::primitives::Value::Uint(i),
AmqpValue::ULong(l) => fe2o3_amqp_types::primitives::Value::Ulong(l),
AmqpValue::Byte(b) => fe2o3_amqp_types::primitives::Value::Byte(b),
AmqpValue::Short(s) => fe2o3_amqp_types::primitives::Value::Short(s),
AmqpValue::Int(i) => fe2o3_amqp_types::primitives::Value::Int(i),
AmqpValue::Long(l) => fe2o3_amqp_types::primitives::Value::Long(l),
AmqpValue::Float(f) => fe2o3_amqp_types::primitives::Value::Float(f.into()),
AmqpValue::Double(d) => fe2o3_amqp_types::primitives::Value::Double(d.into()),
AmqpValue::Char(c) => fe2o3_amqp_types::primitives::Value::Char(c),
AmqpValue::TimeStamp(t) => fe2o3_amqp_types::primitives::Value::Timestamp(t.into()),
AmqpValue::Uuid(u) => fe2o3_amqp_types::primitives::Value::Uuid(u.into()),
AmqpValue::Binary(b) => fe2o3_amqp_types::primitives::Value::Binary(ByteBuf::from(b)),
AmqpValue::String(s) => fe2o3_amqp_types::primitives::Value::String(s),
AmqpValue::Symbol(s) => fe2o3_amqp_types::primitives::Value::Symbol(s.0.into()),
AmqpValue::List(l) => fe2o3_amqp_types::primitives::Value::List(
l.0.into_iter().map(|v| v.into()).collect(),
),
AmqpValue::Map(m) => fe2o3_amqp_types::primitives::Value::Map(
m.into_iter().map(|(k, v)| (k.into(), v.into())).collect(),
),
AmqpValue::Array(a) => fe2o3_amqp_types::primitives::Value::Array(
a.into_iter().map(|v| v.into()).collect(),
),
// An AMQP Composite type is essentially a Described type with a specific descriptor which
// indicates which AMQP performative it is.
//
// Iron Oxide does not directly support Composite types (they're handled via macros), so when a C++
// component attempts to convert an AMQP Composite type to Iron Oxide, we convert it to a Described type
#[cfg(feature = "cplusplus")]
AmqpValue::Composite(d) => fe2o3_amqp_types::primitives::Value::Described(Box::new(
serde_amqp::described::Described {
descriptor: d.descriptor().clone().into(),
value: d.value().clone().into(),
},
)),
AmqpValue::Described(d) => fe2o3_amqp_types::primitives::Value::Described(Box::new(
serde_amqp::described::Described {
descriptor: d.descriptor().clone().into(),
value: d.value().clone().into(),
},
)),
AmqpValue::Unknown => todo!(),
}
}