hash.rs 477 B

1234567891011121314151617181920212223242526
  1. use ibig::ubig;
  2. use std::{
  3. collections::hash_map::DefaultHasher,
  4. hash::{Hash, Hasher},
  5. };
  6. fn hash<T>(x: &T) -> u64
  7. where
  8. T: Hash,
  9. {
  10. let mut hasher = DefaultHasher::new();
  11. x.hash(&mut hasher);
  12. hasher.finish()
  13. }
  14. #[test]
  15. fn test_hash() {
  16. let h = hash(&(ubig!(1) << 1000));
  17. for i in 0..=1000 {
  18. let h2 = hash(&(ubig!(1) << i << (1000 - i)));
  19. assert_eq!(h2, h);
  20. }
  21. let h3 = hash(&(ubig!(2) << 1000));
  22. assert!(h3 != h);
  23. }