clojure-reader 0.6.1

A Clojure reader
Documentation
#[cfg(feature = "std")]
mod test {
	use std::hash::{DefaultHasher, Hash, Hasher};

	use clojure_reader::edn;

	fn calculate_hash<T: Hash>(t: &T) -> u64 {
		let mut s = DefaultHasher::new();
		t.hash(&mut s);
		s.finish()
	}

	#[test]
	fn test_name() {
		let edn1 = "{
        :cat \"\" ; this is utf-8
        :num -0x9042
        :r 42/4242
        #_#_:num 9042
        {:foo \"bar\"} \"foobar\"
        ; dae paren
        :lisp (())
    }";

		let edn2 = "{
        :num -0x9042
        :r 42/4242
        :cat \"\"
        {:foo \"bar\"} \"foobar\"
        :lisp (())
    }";

		let edn_notsame = "{
        :num -0x9043
        :r 42/4242
        :cat \"\"
        {:foo \"bar\"} \"foobar\"
        :lisp (())
    }";

		let (edn1, edn2, edn_notsame) = (
			edn::read_string(edn1).unwrap(),
			edn::read_string(edn2).unwrap(),
			edn::read_string(edn_notsame).unwrap(),
		);

		assert_eq!(calculate_hash(&edn1), calculate_hash(&edn2));
		assert_ne!(calculate_hash(&edn1), calculate_hash(&edn_notsame));
	}
}