fn from()

in sdk/core/azure_core_amqp/src/messaging.rs [436:519]


    fn from(list: AmqpList) -> Self {
        let mut builder = AmqpSource::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<AmqpSymbol, 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::Symbol(distribution_mode)) = list.0.get(6) {
                builder = builder.with_distribution_mode(distribution_mode.clone().into());
            }
        }
        if field_count >= 8 {
            if let Some(AmqpValue::Map(filter)) = list.0.get(7) {
                let filter: AmqpOrderedMap<AmqpSymbol, AmqpValue> = filter
                    .iter()
                    .map(|(k, v)| (k.clone().into(), v.clone()))
                    .collect();
                builder = builder.with_filter(filter);
            }
        }
        if field_count >= 9 {
            if let Some(AmqpValue::Symbol(default_outcome)) = list.0.get(8) {
                builder = builder.with_default_outcome(default_outcome.clone().into());
            }
        }
        if field_count >= 10 {
            if let Some(AmqpValue::Array(outcomes)) = list.0.get(9) {
                builder =
                    builder.with_outcomes(outcomes.iter().map(|v| v.clone().into()).collect());
            }
        }
        if field_count >= 11 {
            if let Some(AmqpValue::Array(capabilities)) = list.0.get(10) {
                builder = builder
                    .with_capabilities(capabilities.iter().map(|v| v.clone().into()).collect());
            }
        }
        builder.build()
    }