 }
 
 extension IncidenceGraph where Self: VertexListGraph & SearchDefaultsGraph, VertexId: IdIndexable & Hashable {
-  /// Executes Dijkstra's search algorithm over `self` from `startVertex` using edge weights from
-  /// `edgeLengths`; `callback` is called at key events of the search.
-  public mutating func dijkstraSearch<
-    Distance: Comparable & AdditiveArithmetic,
-    EdgeLengths: PropertyMap
-  >(
-    startingAt startVertex: VertexId,
-    edgeLengths: EdgeLengths,
-    effectivelyInfinite: Distance,
+  /// Returns the distances from `startVertex` to every other vertex using Dijkstra's search
+  /// algorithm using edge weights from `edgeLengths`; `callback` is called at key events during the
+  /// search.
+  public mutating func dijkstraSearch<
+    Distance: GraphDistanceMeasure,
+    EdgeLengths: PropertyMap
+  >(
+    startingAt startVertex: VertexId,
+    edgeLengths: EdgeLengths,
     callback: DijkstraSearchCallback
   ) rethrows -> TablePropertyMap<Self, VertexId, Distance>
   where

    EdgeLengths.Value == Distance
  {
    var vertexVisitationState = makeDefaultColorMap(repeating: .white)
    var distancesToVertex = DictionaryPropertyMap(repeating: effectivelyInfinite, forVerticesIn: self)

    try dijkstraSearch(
      startingAt: startVertex,

      edgeLengths: edgeLengths,
      workList: [PriorityQueueElement<Distance, VertexId>](),
      workListIndex: ArrayPriorityQueueIndexer(count: vertexCount),
      effectivelyInfinite: Distance.effectiveInfinity,
      callback: callback)

    return distancesToVertex
  }

  /// Returns distances from `startVertex` in `self` using `edgeLengths` starting from `startVertex`
  /// and terminating once `endVertex` has been encountered; `callback` is invoked at key events
  /// during the search.
  public mutating func dijkstraSearch<
    Distance: GraphDistanceMeasure,
    EdgeLengths: PropertyMap
  >(
    startingAt startVertex: VertexId,
    endingAt goalVertex: VertexId,
    edgeLengths: EdgeLengths,
    callback: DijkstraSearchCallback
  ) rethrows -> TablePropertyMap<Self, VertexId, Distance>
  where
