Thread overview
Difference between using `import` with/without the colon
Mar 19, 2023
Jeremy
Mar 19, 2023
Basile B.
Mar 19, 2023
Jeremy
March 19, 2023

Hello, is there any difference at all between the following lines, as an example:

import std.regex;
import std.regex : matchFirst;

What technical differences does it make (except for having the identifier available), using the colon?
Does it make any speed/optimization changes or am I better off just importing the whole module?

March 19, 2023

On Sunday, 19 March 2023 at 07:20:17 UTC, Jeremy wrote:

>

Hello, is there any difference at all between the following lines, as an example:

import std.regex;
import std.regex : matchFirst;

What technical differences does it make (except for having the identifier available), using the colon?
Does it make any speed/optimization changes or am I better off just importing the whole module?

The colon-form, aka "selective import" has for effect

  1. to create a local alias so this can indeed speedup symbol lookups in the sense that search will succeed before looking in the scope of the imports.
  2. to make non-selected symbols, i.e not listed in the colon right hand side, in the import not available.

Note that using both makes no sense, but I guess you did that to express more clearly what you meant.

March 19, 2023

On Sunday, 19 March 2023 at 08:47:32 UTC, Basile B. wrote:

>

On Sunday, 19 March 2023 at 07:20:17 UTC, Jeremy wrote:

>

[...]

The colon-form, aka "selective import" has for effect

  1. to create a local alias so this can indeed speedup symbol lookups in the sense that search will succeed before looking in the scope of the imports.
  2. to make non-selected symbols, i.e not listed in the colon right hand side, in the import not available.

Note that using both makes no sense, but I guess you did that to express more clearly what you meant.

Ah, that makes sense. Thank you!