rust-code-analysis-web/src/web/function.rs (31 lines of code) (raw):

use serde::{Deserialize, Serialize}; use serde_json::{self, Value}; use rust_code_analysis::{Callback, FunctionSpan, ParserTrait, function}; /// Payload containing source code with function spans to be retrieved. #[derive(Debug, Deserialize, Serialize)] pub struct WebFunctionPayload { /// Payload identifier. pub id: String, /// Source code filename. pub file_name: String, /// Source code with function spans to be retrieved. pub code: String, } /// Server response containing function spans for the requested source code. #[derive(Debug, Serialize)] pub struct WebFunctionResponse { /// Server response identifier. pub id: String, /// Function spans for the requested source code. pub spans: Vec<FunctionSpan>, } /// Source code information. #[derive(Debug, Deserialize)] pub struct WebFunctionInfo { /// Source code filename. pub file_name: String, } /// Server request configuration. #[derive(Debug)] pub struct WebFunctionCfg { /// Request identifier. pub id: String, } /// Unit structure to implement the `Callback` trait. pub struct WebFunctionCallback; impl Callback for WebFunctionCallback { type Res = Value; type Cfg = WebFunctionCfg; fn call<T: ParserTrait>(cfg: Self::Cfg, parser: &T) -> Self::Res { let spans = function(parser); serde_json::to_value(WebFunctionResponse { id: cfg.id, spans }).unwrap() } }