Imports

In D, imports represent the counterpart of the C include directive. However there are 2 fundamental differences:

  • Imports may selectively specify which symbols are to be imported. For example, in the above code snippet, the full standard IO module of the standard library is imported, even though only the printf function is used. This results in a degradation in compile time since there is a larger symbol pool that needs to be examined when trying to resolve a symbol. In order to fix this, we can replace the blunt import with:
    import std.stdio : printf;
    
  • Imports may be used at any scope level.
    int main()
    {
      int position = 7, c, n = 10;
      int[10] array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
    
      for (c = position - 1; c < n - 1; c++)
          array[c] = array[c+1];
    
      // If the lines calling printf are deleted,
      // it is easier to spot the now useless import
      import std.stdio : printf;
      printf("Resultant array:\n");
      for (c = 0; c < n - 1; c++)
          printf("%d\n", array[c]);
    
      return 0;
    }