rust-analyzer-cli 0.2.0

A CLI tool built on top of rust-analyzer
use serde::{Deserialize, Serialize};
use std::path::PathBuf;

#[derive(Debug, Serialize, Deserialize)]
pub struct DaemonStatusResponse {
    pub ready: bool,
    pub indexed_at: Option<String>,
    pub workspace_root: String,
    pub process_id: u32,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct SymbolQueryRequest {
    pub name: String,
    pub kind: String,
    pub exact: bool,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct SymbolItem {
    pub name: String,
    pub kind: String,
    pub file: String,
    pub line: u32,
    pub col: u32,
    pub container_name: Option<String>,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct OutlineQueryRequest {
    pub file: PathBuf,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct OutlineItem {
    pub name: String,
    pub kind: String,
    pub detail: Option<String>,
    pub line: u32,
    pub col: u32,
    pub end_line: u32,
    pub children: Vec<OutlineItem>,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct DefinitionQueryRequest {
    pub file: PathBuf,
    pub line: u32,
    pub col: u32,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct DefinitionItem {
    pub file: String,
    pub line: u32,
    pub col: u32,
    pub end_line: u32,
    pub end_col: u32,
    pub snippet: Option<String>,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct CursorQueryRequest {
    pub file: PathBuf,
    pub line: u32,
    pub col: u32,
    pub mode: String, // "incoming", "outgoing", "references"
    pub depth: u32,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct CursorItem {
    pub name: String,
    pub kind: String,
    pub file: String,
    pub line: u32,
    pub col: u32,
    pub caller_or_callee: Option<String>,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct TypeHierarchyQueryRequest {
    pub file: PathBuf,
    pub line: u32,
    pub col: u32,
    pub mode: String, // "supertypes", "subtypes"
    pub depth: u32,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct TypeHierarchyItemResult {
    pub name: String,
    pub kind: String,
    pub file: String,
    pub line: u32,
    pub col: u32,
    pub detail: Option<String>,
}


#[derive(Debug, Serialize, Deserialize)]
pub struct CheckQueryRequest {
    pub target: Option<String>,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct CheckDiagnosticItem {
    pub message: String,
    pub level: String, // "error", "warning"
    pub file: Option<String>,
    pub line: Option<u32>,
    pub col: Option<u32>,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct CheckResponse {
    pub success: bool,
    pub diagnostics: Vec<CheckDiagnosticItem>,
}