Documentando proyectos de Rust con Markdown

RustRustBeginner
Practicar Ahora

This tutorial is from open-source community. Access the source code

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, la principal forma de documentar un proyecto de Rust es a través de la adición de comentarios de documentación al código fuente, los cuales se escriben en la especificación CommonMark Markdown y admiten bloques de código dentro de ellos. Rust se encarga de la corrección y estos bloques de código se compilan y se usan como pruebas de documentación. Estas pruebas se ejecutan automáticamente al usar el comando cargo test. La motivación detrás de las pruebas de documentación es servir como ejemplos que demuestran la funcionalidad y permitir el uso de los ejemplos de la documentación como fragmentos de código completos.

Nota: Si el laboratorio no especifica un nombre de archivo, puede usar cualquier nombre de archivo que desee. Por ejemplo, puede usar main.rs, compilarlo y ejecutarlo con rustc main.rs &&./main.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL rust(("Rust")) -.-> rust/FunctionsandClosuresGroup(["Functions and Closures"]) rust(("Rust")) -.-> rust/MemorySafetyandManagementGroup(["Memory Safety and Management"]) rust(("Rust")) -.-> rust/DataStructuresandEnumsGroup(["Data Structures and Enums"]) rust/FunctionsandClosuresGroup -.-> rust/function_syntax("Function Syntax") rust/FunctionsandClosuresGroup -.-> rust/expressions_statements("Expressions and Statements") rust/MemorySafetyandManagementGroup -.-> rust/lifetime_specifiers("Lifetime Specifiers") rust/DataStructuresandEnumsGroup -.-> rust/method_syntax("Method Syntax") subgraph Lab Skills rust/function_syntax -.-> lab-99282{{"Documentando proyectos de Rust con Markdown"}} rust/expressions_statements -.-> lab-99282{{"Documentando proyectos de Rust con Markdown"}} rust/lifetime_specifiers -.-> lab-99282{{"Documentando proyectos de Rust con Markdown"}} rust/method_syntax -.-> lab-99282{{"Documentando proyectos de Rust con Markdown"}} end

Pruebas de documentación

La principal forma de documentar un proyecto de Rust es a través de la adición de comentarios al código fuente. Los comentarios de documentación se escriben en la especificación CommonMark Markdown y admiten bloques de código dentro de ellos. Rust se encarga de la corrección, por lo que estos bloques de código se compilan y se usan como pruebas de documentación.

/// La primera línea es un resumen corto que describe la función.
///
/// Las siguientes líneas presentan la documentación detallada. Los bloques de código empiezan con
/// triples comillas invertidas y tienen implícito `fn main()` dentro
/// y `extern crate <cratename>`. Asumamos que estamos probando el crate `doccomments`:
///
/// ```
/// let result = doccomments::add(2, 3);
/// assert_eq!(result, 5);
/// ```
pub fn add(a: i32, b: i32) -> i32 {
    a + b
}

/// Por lo general, los comentarios de documentación pueden incluir secciones "Ejemplos", "Panics" y "Fallos".
///
/// La siguiente función divide dos números.
///
/// ## Ejemplos
///
/// ```
/// let result = doccomments::div(10, 2);
/// assert_eq!(result, 5);
/// ```
///
/// ## Panics
///
/// La función produce un error si el segundo argumento es cero.
///
/// ```rust
/// // produce un error al dividir por cero
/// doccomments::div(10, 0);
/// ```
pub fn div(a: i32, b: i32) -> i32 {
    if b == 0 {
        panic!("Error al dividir por cero");
    }

    a / b
}

Los bloques de código en la documentación se prueban automáticamente al ejecutar el comando regular cargo test:

[object Object]

Motivación detrás de las pruebas de documentación

El principal propósito de las pruebas de documentación es servir como ejemplos que demuestren la funcionalidad, lo cual es una de las pautas más importantes. Permite usar los ejemplos de la documentación como fragmentos de código completos. Pero usar ? hace que la compilación falle ya que main devuelve unit. La capacidad de ocultar algunas líneas de código de la documentación viene en ayuda: se puede escribir fn try_main() -> Result<(), ErrorType>, ocultarla y unwraparla en main oculto. ¿Suena complicado? Aquí hay un ejemplo:

/// Usando `try_main` oculto en las pruebas de documentación.
///
/// ```
/// ## // las líneas ocultas empiezan con el símbolo `#`, pero todavía son compilables!
/// ## fn try_main() -> Result<(), String> { // línea que envuelve el cuerpo mostrado en la documentación
/// let res = doccomments::try_div(10, 2)?;
/// ## Ok(()) // devolviendo desde try_main
/// ## }
/// ## fn main() { // comenzando main que llamará a unwrap()
/// ##    try_main().unwrap(); // llamando a try_main y desenvuelta
/// ##                         // para que la prueba produzca un error en caso de error
/// ## }
/// ```
pub fn try_div(a: i32, b: i32) -> Result<i32, String> {
    if b == 0 {
        Err(String::from("División por cero"))
    } else {
        Ok(a / b)
    }
}

Resumen

¡Felicitaciones! Has completado el laboratorio de Pruebas de Documentación. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.