rust_demo_lib 0.1.0

一个用于演示如何编写和发布 Rust 库的示例库
Documentation
//! # rust_demo_lib
//!
//! 一个用于演示如何编写和发布 Rust 库的示例库。
//!
//! ## 快速开始
//!
//! ```rust
//! use rust_demo_lib::add;
//!
//! let result = add(2, 3);
//! assert_eq!(result, 5);
//! ```

/// 将两个整数相加,返回它们的和。
///
/// # 参数
///
/// * `a` - 第一个整数
/// * `b` - 第二个整数
///
/// # 示例
///
/// ```rust
/// use rust_demo_lib::add;
///
/// assert_eq!(rust_demo_lib::add(1, 2), 3);
/// assert_eq!(rust_demo_lib::add(-1, 1), 0);
/// ```
pub fn add(a: i32, b: i32) -> i32 {
    a + b
}

/// 判断一个整数是否为偶数。
///
/// # 参数
///
/// * `n` - 要判断的整数
///
/// # 示例
///
/// ```rust
/// assert!(rust_demo_lib::is_even(4));
/// assert!(!rust_demo_lib::is_even(3));
/// ```
pub fn is_even(n: i32) -> bool {
    n % 2 == 0
}

/// 表示一个二维点。
///
/// # 示例
///
/// ```rust
/// use rust_demo_lib::Point;
///
/// let p = Point::new(3.0, 4.0);
/// assert_eq!(p.distance_from_origin(), 5.0);
/// ```
pub struct Point {
    /// 横坐标
    pub x: f64,
    /// 纵坐标
    pub y: f64,
}

impl Point {
    /// 创建一个新的 `Point`。
    ///
    /// # 参数
    ///
    /// * `x` - 横坐标
    /// * `y` - 纵坐标
    pub fn new(x: f64, y: f64) -> Self {
        Point { x, y }
    }

    /// 计算该点到原点 `(0, 0)` 的距离。
    ///
    /// # 示例
    ///
    /// ```rust
    /// use rust_demo_lib::Point;
    ///
    /// let p = Point::new(3.0, 4.0);
    /// assert_eq!(p.distance_from_origin(), 5.0);
    /// ```
    pub fn distance_from_origin(&self) -> f64 {
        (self.x * self.x + self.y * self.y).sqrt()
    }
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_add() {
        assert_eq!(add(2, 3), 5);
        assert_eq!(add(-1, 1), 0);
    }

    #[test]
    fn test_is_even() {
        assert!(is_even(0));
        assert!(is_even(4));
        assert!(!is_even(3));
    }

    #[test]
    fn test_point_distance() {
        let p = Point::new(3.0, 4.0);
        assert_eq!(p.distance_from_origin(), 5.0);
    }
}