23 stable releases

1.16.1 Jan 24, 2022
1.16.0 Jan 17, 2022
1.12.0 Sep 26, 2021
1.11.1 Aug 29, 2021
1.7.2 May 27, 2021

#24 in #documents

Download history 1/week @ 2024-06-28 13/week @ 2024-07-05 148/week @ 2024-07-26 14/week @ 2024-08-02

162 downloads per month

Apache-2.0

315KB
3K SLoC

Stencila Schema for Rust

Build Status Crates.io Docs

This crate provides Rust bindings for the Stencila Schema. It is primarily aimed at Rust developers wanting to programmatically generate or modify documents, particularly executable documents. For example, it is used in the Stencila Rust library.

Install

cargo add stencila_schema

Use

This package exports a struct for each type of document node in the Stencila Schema e.g. Article, Paragraph, CodeChunk.

Note that all node properties e.g. familyNames are made snake case e.g. family_names for consistency with Rust conventions.

let article = Article {
    title: Some(ArticleTitle::String("The article title".into())),
    authors: Some(vec![ArticleAuthors::Person({
        Person {
            given_names: Some(vec!["Jane".into()]),
            family_names: Some(vec!["Jones".into()]),
            ..Default::default()
        }
    })]),
    content: Some(vec![BlockContent::Paragraph(Paragraph {
        content: vec![
            InlineContent::String("A paragraph with a ".into()),
            InlineContent::CodeExpression(CodeExpression {
                programming_language: Some("r".into()),
                text: "2^2".into(),
                ..Default::default()
            }),
        ],
        ..Default::default()
    })]),
    ..Default::default()
};

Develop

Get started by cloning this repository and using cargo to run the tests,

git clone git@github.com:stencila/schema
cd schema/rust
cargo test

Of course, you need to have Rust installed. If you want to re-generate src/types.rs, you'll also need to have Node.js installed (to generate the Rust code from the schema's YAML files).

Dependencies

~2.7–4MB
~71K SLoC