[rust-dev] idea: specific visibility

Kobi Lurie kobi2187 at gmail.com
Sun Apr 8 11:13:42 PDT 2012

hi guys, another suggestion.

What do you think of:
the called side (functions, members, maybe classes) can specify its 
visibility down to the function level. (with some wildcard syntax)
this is enhancing the private public internal as seen in most languages.

The Eiffel language has something similar for classes.
that is, selective export, only these classes can view this function.
In the Eiffel language:
class ARRAYED_LIST  [ G ]  inherit
     ARRAY  [ G ]
             count  as capacity, item  as array_item, put as array_put
             {NONE}  all
             {ANY} capacity
('none' is the "null" class, 'any' is like object, meaning that all 
classes can see 'capacity' but everything else is private)

this idea can be extended to functions, and checked by the compiler.
for example, a member can declare that only the setter can change it.
same thing for a getter.
sometimes a dll has a lot of inter-related functionality inside, and you 
want a certain "internal" function to be visible, but only used by 
certain functions.

The general idea, is that in a large project, this helps maintainability.
In a glance, you can see and limit misbehavior, therefore easier control 
of the code, and a more stable basis to build on. when things are 
simple, it is possible to continue developing, when things get complex, 
every advancing step is sluggish and slower.

I know these suggestions are kind of exotic, I have a few more 
traditional ones.
Bye, Kobi

More information about the Rust-dev mailing list