Skip to main content

distrib_common/
language.rs

1// This is free and unencumbered software released into the public domain.
2
3use alloc::string::String;
4use derive_more::{Display, FromStr};
5
6/// A supported programming language.
7///
8/// See: <https://www.tiobe.com/tiobe-index/>
9#[derive(Clone, Debug, Display, Default, Eq, FromStr, Hash, Ord, PartialEq, PartialOrd)]
10#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
11#[cfg_attr(
12    feature = "serde",
13    serde(rename_all(serialize = "lowercase", deserialize = "lowercase"))
14)]
15#[non_exhaustive]
16pub enum Language {
17    /// The Ada language.
18    ///
19    /// See: <https://ada-lang.io/>
20    #[cfg(feature = "unstable")]
21    Ada,
22
23    /// The C language.
24    ///
25    /// See: <https://en.cppreference.com/w/c>
26    #[cfg(feature = "unstable")]
27    C,
28
29    /// The Clojure language.
30    ///
31    /// See: <https://clojure.org/>
32    #[cfg(feature = "unstable")]
33    Clojure,
34
35    /// The C++ language.
36    ///
37    /// See: <https://cppreference.com/>
38    #[cfg(feature = "unstable")]
39    Cpp,
40
41    /// The Crystal language.
42    ///
43    /// See: <https://crystal-lang.org/>
44    #[cfg(feature = "unstable")]
45    Crystal,
46
47    /// The C# language.
48    ///
49    /// See: <https://csharp.net/>
50    #[cfg(feature = "unstable")]
51    CSharp,
52
53    /// The D language.
54    ///
55    /// See: <https://dlang.org/>
56    #[cfg(feature = "unstable")]
57    D,
58
59    /// The Dart language.
60    ///
61    /// See: <https://dart.dev/>
62    Dart,
63
64    /// The Elixir language.
65    ///
66    /// See: <https://elixir-lang.org/>
67    Elixir,
68
69    /// The Erlang language.
70    ///
71    /// See: <https://erlang.org/>
72    Erlang,
73
74    /// The Fortran language.
75    ///
76    /// See: <https://fortran-lang.org/>
77    #[cfg(feature = "unstable")]
78    Fortran,
79
80    /// The F# language.
81    ///
82    /// See: <https://fsharp.org/>
83    #[cfg(feature = "unstable")]
84    FSharp,
85
86    /// The Gleam language.
87    ///
88    /// See: <https://gleam.run/>
89    Gleam,
90
91    /// The Go language.
92    ///
93    /// See: <https://go.dev/>
94    #[cfg(feature = "unstable")]
95    Go,
96
97    /// The Haskell language.
98    ///
99    /// See: <https://haskell.org/>
100    #[cfg(feature = "unstable")]
101    Haskell,
102
103    /// The Java language.
104    ///
105    /// See: <https://java.com/>
106    #[cfg(feature = "unstable")]
107    Java,
108
109    /// The JavaScript (aka JS) language.
110    ///
111    /// See: <https://developer.mozilla.org/en-US/docs/Web/JavaScript>
112    JavaScript,
113
114    /// The Julia language.
115    ///
116    /// See: <https://julialang.org/>
117    #[cfg(feature = "unstable")]
118    Julia,
119
120    /// The Kotlin language.
121    ///
122    /// See: <https://kotlinlang.org/>
123    #[cfg(feature = "unstable")]
124    Kotlin,
125
126    /// The Common Lisp language.
127    ///
128    /// See: <https://common-lisp.net/>
129    #[cfg(feature = "unstable")]
130    Lisp,
131
132    /// The Lua language.
133    ///
134    /// See: <https://lua.org/>
135    #[cfg(feature = "unstable")]
136    Lua,
137
138    /// The Mojo language.
139    ///
140    /// See: <https://mojolang.org/>
141    #[cfg(feature = "unstable")]
142    Mojo,
143
144    /// The Nim language.
145    ///
146    /// See: <https://nim-lang.org/>
147    #[cfg(feature = "unstable")]
148    Nim,
149
150    /// The OCaml language.
151    ///
152    /// See: <https://ocaml.org/>
153    #[cfg(feature = "unstable")]
154    Ocaml,
155
156    /// The Perl language.
157    ///
158    /// See: <https://perl.org/>
159    #[cfg(feature = "unstable")]
160    Perl,
161
162    /// The PHP language.
163    ///
164    /// See: <https://php.net/>
165    #[cfg(feature = "unstable")]
166    Php,
167
168    /// The Python language.
169    ///
170    /// See: <https://python.org/>
171    Python,
172
173    /// The R language.
174    ///
175    /// See: <https://r-project.org/>
176    #[cfg(feature = "unstable")]
177    R,
178
179    /// The Racket language.
180    ///
181    /// See: <https://racket-lang.org/>
182    #[cfg(feature = "unstable")]
183    Racket,
184
185    /// The Rhombus language.
186    ///
187    /// See: <https://rhombus-lang.org/>
188    #[cfg(feature = "unstable")]
189    Rhombus,
190
191    /// The Ruby language.
192    ///
193    /// See: <https://ruby-lang.org/>
194    Ruby,
195
196    /// The Rust language.
197    ///
198    /// See: <https://rust-lang.org/>
199    #[default]
200    Rust,
201
202    /// The Scala language.
203    ///
204    /// See: <https://scala-lang.org/>
205    #[cfg(feature = "unstable")]
206    Scala,
207
208    /// The Swift language.
209    ///
210    /// See: <https://swift.org/>
211    #[cfg(feature = "unstable")]
212    Swift,
213
214    /// The TypeScript (aka TS) language.
215    ///
216    /// See: <https://typescriptlang.org/>
217    TypeScript,
218
219    /// The Zig language.
220    ///
221    /// See: <https://ziglang.org/>
222    #[cfg(feature = "unstable")]
223    Zig,
224}