xdebug 0.4.1

PHP xdebug client library
Documentation
use quick_xml::de::from_str;
use serde::{Deserialize, Serialize};
use crate::xml::XdebugError;

#[derive(Debug, Serialize, Deserialize)]
pub enum StepInto {
    Success(Success),
    Error(Error),
}

#[derive(Debug, Serialize, Deserialize)]
pub struct Success {
    #[serde(rename = "@command")]
    pub command: String,
    #[serde(rename = "@transaction_id")]
    pub transaction_id: i32,
    #[serde(rename = "@status")]
    pub status: String,
    #[serde(rename = "@reason")]
    pub reason: String,
    pub message: Option<Message>,
    pub return_value: Option<ReturnValue>,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct Message {
    #[serde(rename = "@filename")]
    pub filename: String,
    #[serde(rename = "@lineno")]
    pub lineno: i32,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct ReturnValue {
    pub property: Property,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct Property {
    #[serde(rename = "$text")]
    content: Option<String>,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct Error {
    #[serde(rename = "@command")]
    pub command: String,
    #[serde(rename = "@transaction_id")]
    pub transaction_id: i32,
    error: XdebugError,
}

impl StepInto {
    pub fn from_str(str: &str) -> StepInto {
        if let Ok(response) = from_str(str) {
            return StepInto::Success(response);
        }

        StepInto::Error(from_str(str).unwrap())
    }
}