tauri-plugin-profiling 0.1.0

Tauri plugin for CPU profiling with flamegraph generation
Documentation
//! Configuration types for the profiling plugin.

use serde::{Deserialize, Serialize};
use std::path::PathBuf;

/// Plugin configuration set at initialization.
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(default)]
pub struct ProfilingConfig {
    /// Sampling frequency in Hz (default: 100)
    pub frequency: i32,

    /// Output directory for flamegraphs (default: app data dir)
    pub output_dir: Option<PathBuf>,

    /// Filename prefix for generated flamegraphs
    pub filename_prefix: String,
}

impl Default for ProfilingConfig {
    fn default() -> Self {
        Self {
            frequency: 100,
            output_dir: None,
            filename_prefix: "cpu-profile".to_string(),
        }
    }
}

/// Per-session options that override plugin configuration.
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(default)]
pub struct StartOptions {
    /// Override sampling frequency for this session
    pub frequency: Option<i32>,

    /// Custom filename for this session's output
    pub filename: Option<String>,
}

/// Output from a completed profiling session.
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ProfileResult {
    /// Path to the generated flamegraph SVG
    pub flamegraph_path: PathBuf,

    /// Total samples collected
    pub sample_count: usize,

    /// Duration of profiling in milliseconds
    pub duration_ms: u64,
}