[][src]Function genco::tokens::register

pub fn register<T, L>(inner: T) -> impl FormatInto<L> where
    T: Register<L>,
    L: Lang

Function to provide item registration.

Examples

use genco::prelude::*;

let write_bytes_ext = rust::import("byteorder", "WriteBytesExt").with_alias("_");
let read_bytes_ext = rust::import("byteorder", "ReadBytesExt").with_alias("_");
let cursor = &rust::import("std::io", "Cursor");
let big_endian = &rust::import("byteorder", "BigEndian");

let tokens = quote! {
    #(register((write_bytes_ext, read_bytes_ext)))

    let mut wtr = vec![];
    wtr.write_u16::<#big_endian>(517).unwrap();
    wtr.write_u16::<#big_endian>(768).unwrap();
    assert_eq!(wtr, vec![2, 5, 3, 0]);

    let mut rdr = #cursor::new(vec![2, 5, 3, 0]);
    assert_eq!(517, rdr.read_u16::<#big_endian>().unwrap());
    assert_eq!(768, rdr.read_u16::<#big_endian>().unwrap());
};

assert_eq!(
    vec![
        "use byteorder::{BigEndian, ReadBytesExt as _, WriteBytesExt as _};",
        "use std::io::Cursor;",
        "",
        "let mut wtr = vec![];",
        "wtr.write_u16::<BigEndian>(517).unwrap();",
        "wtr.write_u16::<BigEndian>(768).unwrap();",
        "assert_eq!(wtr, vec![2, 5, 3, 0]);",
        "",
        "let mut rdr = Cursor::new(vec![2, 5, 3, 0]);",
        "assert_eq!(517, rdr.read_u16::<BigEndian>().unwrap());",
        "assert_eq!(768, rdr.read_u16::<BigEndian>().unwrap());"
    ],
    tokens.to_file_vec()?,
);