Skip to content

Commit

Permalink
allow mutable keys in map
Browse files Browse the repository at this point in the history
  • Loading branch information
tiye committed Jan 5, 2025
1 parent daf7d5c commit 51f9d2f
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 0 deletions.
2 changes: 2 additions & 0 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,7 @@ fn extract_cirru_edn(node: &Cirru) -> Result<Edn, String> {
Ok(Edn::List(EdnListView(ys)))
}
"#{}" => {
#[allow(clippy::mutable_key_type)]
let mut ys: HashSet<Edn> = HashSet::new();
for x in xs.iter().skip(1) {
if is_comment(x) {
Expand All @@ -129,6 +130,7 @@ fn extract_cirru_edn(node: &Cirru) -> Result<Edn, String> {
Ok(Edn::Set(EdnSetView(ys)))
}
"{}" => {
#[allow(clippy::mutable_key_type)]
let mut zs: HashMap<Edn, Edn> = HashMap::new();
for x in xs.iter().skip(1) {
if is_comment(x) {
Expand Down
9 changes: 9 additions & 0 deletions tests/edn_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ fn list_parsing() {

#[test]
fn set_parsing() {
#[allow(clippy::mutable_key_type)]
let mut v: HashSet<Edn> = HashSet::new();
v.insert(Edn::tag("a"));
v.insert(Edn::tag("b"));
Expand Down Expand Up @@ -147,6 +148,7 @@ fn list_writing() -> Result<(), String> {

#[test]
fn set_writing() -> Result<(), String> {
#[allow(clippy::mutable_key_type)]
let mut v = HashSet::new();
v.insert(Edn::Number(1.0));
v.insert(Edn::from(vec![Edn::Number(3.0)]));
Expand Down Expand Up @@ -257,13 +259,16 @@ fn debug_format() {
// let data = cirru_edn::parse(String::from(DICT_DEMO2))?;
// assert_eq!(format!("{}", data), DICT_INLINE2);

#[allow(clippy::mutable_key_type)]
let empty: HashMap<Edn, Edn> = HashMap::new();
assert_eq!(format!("{}", Edn::from(empty)), "({})");

#[allow(clippy::mutable_key_type)]
let mut singleton: HashMap<Edn, Edn> = HashMap::new();
singleton.insert(Edn::tag("a"), Edn::str("b"));
assert_eq!(format!("{}", Edn::from(singleton)), "({} (:a |b))");

#[allow(clippy::mutable_key_type)]
let mut singleton_set: HashSet<Edn> = HashSet::new();
singleton_set.insert(Edn::sym("a"));
assert_eq!(format!("{}", Edn::from(singleton_set)), "(#{} 'a)");
Expand All @@ -289,6 +294,7 @@ fn test_reader() -> Result<(), String> {
);
assert_eq!(Edn::from(vec![Edn::Number(1.0)]).view_list()?.get_or_nil(1), Edn::Nil);

#[allow(clippy::mutable_key_type)]
let mut dict = HashMap::new();
dict.insert(Edn::tag("k"), Edn::Number(1.1));
assert!((Edn::from(dict.to_owned()).view_map()?.get_or_nil("k").read_number()? - 1.1).abs() < f64::EPSILON);
Expand Down Expand Up @@ -325,6 +331,7 @@ fn test_buffer() -> Result<(), String> {

#[test]
fn test_string_order() -> Result<(), String> {
#[allow(clippy::mutable_key_type)]
let mut data: HashMap<Edn, Edn> = HashMap::new();
data.insert(Edn::tag("a"), Edn::Number(1.0));
data.insert(Edn::tag("c"), Edn::Number(2.0));
Expand All @@ -335,6 +342,7 @@ fn test_string_order() -> Result<(), String> {
"{} (:Z 4) (:a 1) (:b 3) (:c 2)".to_owned()
);

#[allow(clippy::mutable_key_type)]
let mut data2: HashMap<Edn, Edn> = HashMap::new();
data2.insert(Edn::str("a"), Edn::Number(1.0));
data2.insert(Edn::str("c"), Edn::Number(2.0));
Expand All @@ -345,6 +353,7 @@ fn test_string_order() -> Result<(), String> {
"{} (|Z 4) (|a 1) (|b 3) (|c 2)".to_owned()
);

#[allow(clippy::mutable_key_type)]
let mut v: HashSet<Edn> = HashSet::new();
v.insert(Edn::tag("a"));
v.insert(Edn::tag("1"));
Expand Down
1 change: 1 addition & 0 deletions tests/viewer_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ fn building_set() {
set.insert(Edn::Number(1.0));
set.insert(Edn::Number(2.0));

#[allow(clippy::mutable_key_type)]
let mut s = HashSet::new();
s.insert(Edn::Number(1.0));
s.insert(Edn::Number(2.0));
Expand Down

0 comments on commit 51f9d2f

Please sign in to comment.