Skip to main content

simple_icons_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 = "simple_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 title of the icon's brand.
27    pub title: &'static str,
28
29    /// The color associated with the brand's icon
30    pub hex: &'static str,
31
32    /// A URL pointing to the brand's website.
33    pub source: &'static str,
34
35    /// A URL pointing to the brand's usage guidelines (if known).
36    pub guidelines: Option<&'static str>,
37
38    /// A License associated with the brand's icon/assets (if known).
39    pub license: Option<&'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}