//! Generic hashing support.//!//! This module provides a generic way to compute the [hash] of a value.//! Hashes are most commonly used with [`HashMap`] and [`HashSet`].//!//! [hash]: https://en.wikipedia.org/wiki/Hash_function//! [`HashMap`]: ../../std/collections/struct.HashMap.html//! [`HashSet`]: ../../std/collections/struct.HashSet.html//!//! The simplest way to make a type hashable is to use `#[derive(Hash)]`://!//! # Examples//!//! ```rust//! use std::hash::{DefaultHasher, Hash, Hasher};//!//! #[derive(Hash)]//! struct Person {//! id: u32,//! name: String,//! phone: u64,//! }//!//! let person1 = Person {//! id: 5,//! name: "Janet".to_string(),//! phone: 555_666_7777,//! };//! let person2 = Person {//! id: 5,//! name: "Bob".to_string(),//! phone: 555_666_7777,//! };//!//! assert!(calculate_hash(&person1) != calculate_hash(&person2));//!//! fn calculate_hash<T: Hash>(t: &T) -> u64 {//! let mut s = DefaultHasher::new();//! t.hash(&mut s);//! s.finish()//! }//! ```//!//! If you need more control over how a value is hashed, you need to implement//! the [`Hash`] trait://!//! ```rust//! use std::hash::{DefaultHasher, Hash, Hasher};//!//! struct Person {//! id: u32,//! # #[allow(dead_code)]//! name: String,//! phone: u64,//! }//!//! impl Hash for Person {//! fn hash<H: Hasher>(&self, state: &mut H) {//! self.id.hash(state);//! self.phone.hash(state);//! }//! }//!//! let person1 = Person {//! id: 5,//! name: "Janet".to_string(),//! phone: 555_666_7777,//! };//! let person2 = Person {//! id: 5,//! name: "Bob".to_string(),//! phone: 555_666_7777,//! };//!//! assert_eq!(calculate_hash(&person1), calculate_hash(&person2));//!//! fn calculate_hash<T: Hash>(t: &T) -> u64 {//! let mut s = DefaultHasher::new();//! t.hash(&mut s);//! s.finish()//! }//! ```#![stable(feature = "rust1", since = "1.0.0")]pub(crate) mod random;#[stable(feature = "rust1", since = "1.0.0")]pub use core::hash::*;#[stable(feature = "std_hash_exports", since = "CURRENT_RUSTC_VERSION")]pub use self::random::{DefaultHasher, RandomState};
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。