in sdk/core/azure_core_amqp/src/messaging.rs [290:347]
fn from(list: AmqpList) -> Self {
let mut builder = AmqpTarget::builder();
let field_count = list.len();
if field_count >= 1 {
if let Some(AmqpValue::String(address)) = list.0.first() {
builder = builder.with_address(address.clone());
}
}
if field_count >= 2 {
if let Some(AmqpValue::UByte(durable)) = list.0.get(1) {
match *durable {
0 => {
builder = builder.with_durable(TerminusDurability::None);
}
1 => {
builder = builder.with_durable(TerminusDurability::Configuration);
}
2 => {
builder = builder.with_durable(TerminusDurability::UnsettledState);
}
_ => {
panic!("Invalid durable value");
}
}
}
}
if field_count >= 3 {
if let Some(AmqpValue::Symbol(expiry_policy)) = list.0.get(2) {
builder = builder.with_expiry_policy(expiry_policy.clone().into());
}
}
if field_count >= 4 {
if let Some(AmqpValue::UInt(timeout)) = list.0.get(3) {
builder = builder.with_timeout(*timeout);
}
}
if field_count >= 5 {
if let Some(AmqpValue::Boolean(dynamic)) = list.0.get(4) {
builder = builder.with_dynamic(*dynamic);
}
}
if field_count >= 6 {
if let Some(AmqpValue::Map(dynamic_node_properties)) = list.0.get(5) {
let dynamic_node_properties: AmqpOrderedMap<String, AmqpValue> =
dynamic_node_properties
.iter()
.map(|(k, v)| (k.clone().into(), v.clone()))
.collect();
builder = builder.with_dynamic_node_properties(dynamic_node_properties);
}
}
if field_count >= 7 {
if let Some(AmqpValue::Array(capabilities)) = list.0.get(6) {
builder = builder.with_capabilities(capabilities.to_vec());
}
}
builder.build()
}