What is the difference between `using` and `import` in Julia when building a module?

julia

Solution

The Julia Modules documentation states:

The `import` keyword [...] only operates on a single name at a time. It does not add modules to be searched the way `using` does. `import` also differs from `using` in that functions must be imported using `import` to be extended with new methods. [...] Functions whose names are only visible via `using` cannot be extended.

(Emphasis mine.)

For example, you can use `import` to add methods to `Base.show` to pretty-print your own types, but not with `using`.

There is also `importall` that imports all exported names of a module.

(This answer refers to Julia 0.6; the documentation was reworded for 1.0.)

Problem

Question: What is the difference between `using` and `import` in Julia when I'm building my own module? My guess based on reading the docs: `using` is used to bring another module into the name-space of the current module. `import` is used to bring specific types/functions/variables from other modules into the name-space of the current module. So, how wrong am I?

Original source