message: Fix `maybe_changed_after`'s logic
diff: -use std::hash::Hash;
  -use rustc_hash::FxHashMap;
  -use crate::{AsId, DatabaseKeyIndex, Durability, Id, IngredientIndex, Revision, Runtime};
  use crate::cycle::CycleRecoveryStrategy;
  use crate::ingredient::Ingredient;
  use crate::key::DependencyIndex;
  use crate::runtime::local_state::QueryEdges;
  use crate::runtime::StampedValue;
  +use crate::{AsId, DatabaseKeyIndex, Durability, Id, IngredientIndex, Revision, Runtime};
  +use rustc_hash::FxHashMap;
  +use std::hash::Hash;
  /// Ingredient used to represent the fields of a `#[salsa::input]`.
  /// These fields can only be mutated by an explicit call to a setter
  @@ -14,11 +14,12 @@ use crate::runtime::StampedValue;
  /// This makes the implementation considerably simpler.
  pub struct InputFieldIngredient<K, F> {
  index: IngredientIndex,
  - map: FxHashMap<K, StampedValue<F>>
  + map: FxHashMap<K, StampedValue<F>>,
  }
  impl<K, F> InputFieldIngredient<K, F>
  -where K: Eq + Hash + AsId
  +where
  + K: Eq + Hash + AsId,
  {
  pub fn new(index: IngredientIndex) -> Self {
  Self {
  @@ -38,7 +39,7 @@ where K: Eq + Hash + AsId
  let stamped_value = StampedValue {
  value,
  durability,
  - changed_at: revision
  + changed_at: revision,
  };
  if let Some(old_value) = self.map.insert(key, stamped_value) {
  @@ -48,15 +49,11 @@ where K: Eq + Hash + AsId
  }
  }
  - pub fn fetch(
  - &self,
  - runtime: &Runtime,
  - key: K,
  - ) -> &F {
  + pub fn fetch(&self, runtime: &Runtime, key: K) -> &F {
  let StampedValue {
  value,
  durability,
  - changed_at
  + changed_at,
  } = self.map.get(&key).unwrap();
  runtime.report_tracked_read(
  @@ -77,13 +74,16 @@ where K: Eq + Hash + AsId
  }
  impl<DB: ?Sized, K, F> Ingredient<DB> for InputFieldIngredient<K, F>
  +where
  + K: AsId,
  {
  fn cycle_recovery_strategy(&self) -> CycleRecoveryStrategy {
  CycleRecoveryStrategy::Panic
  }
  - fn maybe_changed_after(&self, _db: &DB, _input: DependencyIndex, _revision: Revision) -> bool {
  - false
  + fn maybe_changed_after(&self, _db: &DB, input: DependencyIndex, revision: Revision) -> bool {
  + let key: K = AsId::from_id(input.key_index.unwrap());
  + self.map.get(&key).unwrap().changed_at > revision
  }
  fn inputs(&self, _key_index: Id) -> Option<QueryEdges> {
  