'In OCaml, what does aliasing a module do exactly?

In OCaml, to bring another module in scope you can use open. But what about code like this:

module A = struct
  include B.C

  module D = B.E
end

Does this create an entirely new module called A that has nothing to do with the modules created by B? Or are the types in B equivalent to this new structure and can a type in A.t can be used interchangeably with a type in B.C.t for example?

Especially, comparing to Rust I believe this is very different from writing something like

pub mod a {
  pub use b::c::*;
  pub use b::e as d;
}


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source