# YAML Front Matter (YFM) Parser
yaml-front-matter parses a valid YAML string into a struct
which
implements the DeserializeOwned
trait from serde.
Consider the following YAML content on the top of your markdown file:
```yml
title: 'Parsing a Markdown file metadata into a struct' description: 'This tutorial walks you through the practice of parsing markdown files for metadata' tags: ['markdown', 'rust', 'files', 'parsing', 'metadata'] similarposts: - 'Rendering markdown' - 'Using Rust to render markdown' date: '2021-09-13T03:48:00' favoritenumbers: - 3.14 - 1970 - 12345
```
This crate takes care of extracting this header from your markdown file and
parse extracted data using serde
and serde_yaml
.
## Example
```rust use serde::Deserialize; use yamlfrontmatter::YamlFrontMatter;
const SIMPLEMARKDOWNYFM: &str = r#"
title: 'Parsing a Markdown file metadata into a struct' description: 'This tutorial walks you through the practice of parsing markdown files for metadata' tags: ['markdown', 'rust', 'files', 'parsing', 'metadata'] similarposts: - 'Rendering markdown' - 'Using Rust to render markdown' date: '2021-09-13T03:48:00' favoritenumbers: - 3.14 - 1970 - 12345
# Parsing a Markdown file metadata into a struct
This tutorial walks you through the practice of parsing markdown files for metadata "#;
#[derive(Deserialize)]
struct Metadata {
title: String,
description: String,
tags: Vec
let result = YamlFrontMatter::parse::
let Metadata { title, description, tags, similarposts, date, favoritenumbers, } = result;
asserteq!(title, "Parsing a Markdown file metadata into a struct"); asserteq!( description, "This tutorial walks you through the practice of parsing markdown files for metadata" ); asserteq!( tags, vec!["markdown", "rust", "files", "parsing", "metadata"] ); asserteq!( similarposts, vec!["Rendering markdown", "Using Rust to render markdown"] ); asserteq!(date, "2021-09-13T03:48:00"); asserteq!(favoritenumbers, vec![3.14, 1970., 12345.]); ```