[][src]Function genco::lang::rust::import

pub fn import<M, N>(module: M, name: N) -> Import where
    M: Into<ItemStr>,
    N: Into<ItemStr>, 

Setup an imported element.

Examples

use genco::prelude::*;

let a = rust::import("std::fmt", "Debug").qualified();
let b = rust::import("std::fmt", "Debug").with_module_alias("fmt2");
let c = rust::import("std::fmt", "Debug");
let d = rust::import("std::fmt", "Debug").with_alias("FmtDebug");

let toks = quote!{
    #a
    #b
    #c
    #d
};

assert_eq!(
    vec![
        "use std::fmt::{self, self as fmt2, Debug, Debug as FmtDebug};",
        "",
        "fmt::Debug",
        "fmt2::Debug",
        "Debug",
        "FmtDebug",
    ],
    toks.to_file_vec()?
);

Example with an alias

use genco::prelude::*;

let ty = rust::import("std::fmt", "Debug").with_alias("FmtDebug");

let toks = quote!{
    #ty
};

assert_eq!(
    vec![
        "use std::fmt::Debug as FmtDebug;",
        "",
        "FmtDebug",
    ],
    toks.to_file_vec()?
);

Example with a module alias

use genco::prelude::*;

let ty = rust::import("std::fmt", "Debug").with_module_alias("fmt2");

let toks = quote!{
    #ty
};

assert_eq!(
    vec![
        "use std::fmt as fmt2;",
        "",
        "fmt2::Debug",
    ],
    toks.to_file_vec()?
);

Example with multiple aliases

use genco::prelude::*;

let a = rust::import("std::fmt", "Debug").with_alias("FmtDebug");
let b = rust::import("std::fmt", "Debug").with_alias("FmtDebug2");

let toks = quote!{
    #a
    #b
};

assert_eq!(
    vec![
        "use std::fmt::{Debug as FmtDebug, Debug as FmtDebug2};",
        "",
        "FmtDebug",
        "FmtDebug2",
    ],
    toks.to_file_vec()?
);