executeInAllInjectors<T> method

void executeInAllInjectors<T>(
  1. AutoInjectorImpl startInjector,
  2. T callback(
    1. AutoInjectorImpl
    )
)

Execute callback in all the injectors.

NOTE: Algorithm based on BFS (breadth-first search)

Implementation

void executeInAllInjectors<T>(
  AutoInjectorImpl startInjector,
  T Function(AutoInjectorImpl) callback,
) {
  final visited = <AutoInjectorImpl>{};
  final queue = Queue<AutoInjectorImpl>();
  queue.add(startInjector);

  while (queue.isNotEmpty) {
    final currentInjector = queue.removeFirst();
    callback(currentInjector);

    if (adjacencyList[currentInjector] == null) continue;

    for (final adjacentInjector in adjacencyList[currentInjector]!) {
      if (!visited.contains(adjacentInjector)) {
        visited.add(adjacentInjector);
        queue.add(adjacentInjector);
      }
    }
  }
}