faker_rust/default/
programming_language.rs1use crate::base::sample;
4use crate::locale::fetch_locale;
5
6pub fn name() -> String {
8 fetch_locale("programming_language.names", "en")
9 .map(|v| sample(&v))
10 .unwrap_or_else(|| sample(FALLBACK_NAMES).to_string())
11}
12
13pub fn creator() -> String {
15 fetch_locale("programming_language.creators", "en")
16 .map(|v| sample(&v))
17 .unwrap_or_else(|| sample(FALLBACK_CREATORS).to_string())
18}
19
20const FALLBACK_NAMES: &[&str] = &[
22 "Rust", "Python", "JavaScript", "TypeScript", "Java", "C", "C++", "C#",
23 "Go", "Ruby", "PHP", "Swift", "Kotlin", "Scala", "R", "MATLAB",
24 "Perl", "Lua", "Haskell", "Clojure", "Elixir", "Erlang", "F#",
25 "Dart", "Julia", "Groovy", "Objective-C", "Visual Basic", "Assembly",
26 "Fortran", "COBOL", "Lisp", "Scheme", "Prolog", "Smalltalk", "Ada",
27];
28
29const FALLBACK_CREATORS: &[&str] = &[
30 "Graydon Hoare", "Guido van Rossum", "Brendan Eich", "Anders Hejlsberg",
31 "James Gosling", "Dennis Ritchie", "Bjarne Stroustrup", "Rob Pike",
32 "Yukihiro Matsumoto", "Rasmus Lerdorf", "Chris Lattner", "Martin Odersky",
33 "Rich Hickey", "José Valim", "Joe Armstrong", "Lars Bak",
34];
35
36#[cfg(test)]
37mod tests {
38 use super::*;
39
40 #[test]
41 fn test_name() {
42 assert!(!name().is_empty());
43 }
44
45 #[test]
46 fn test_creator() {
47 assert!(!creator().is_empty());
48 }
49}