Skip to main content

fontawesome_free_pack/
lib.rs

1#![doc = include_str!("../README.md")]
2mod icons;
3pub use icons::*;
4
5mod finder;
6pub use finder::get_icon;
7
8#[cfg(feature = "pyo3")]
9use pyo3::prelude::*;
10#[cfg(feature = "pyo3")]
11pub mod py_binding;
12
13/// A Generic structure to describe a single icon.
14#[cfg_attr(
15    feature = "pyo3",
16    pyclass(module = "fontawesome_free_icons_pack", get_all, frozen)
17)]
18#[derive(Debug, PartialEq, Eq)]
19pub struct Icon {
20    /// The SVG data.
21    pub svg: &'static str,
22
23    /// The slug to identify the icon.
24    pub slug: &'static str,
25
26    /// The Unix timestamp of the icon's last modification.
27    pub last_modified: u32,
28
29    /// A flag to indicate family of the icon.
30    pub family: &'static str,
31
32    /// The width of the icon.
33    pub width: u16,
34
35    /// The height of the icon.
36    pub height: u16,
37
38    /// The label (human readable name) of the icon.
39    pub label: &'static str,
40    // The list of `aliases` would need (in a const context) either
41    // - a lifetime boundary
42    // - "lazy" static allocation
43    // Both solutions do not work well for python bindings.
44}
45
46#[cfg(feature = "pyo3")]
47#[cfg_attr(feature = "pyo3", pymethods)]
48impl Icon {
49    pub fn __repr__(&self) -> PyResult<String> {
50        Ok(format!("< Icon object for slug {} >", self.slug))
51    }
52}