remove internal APIs from public interface
Describe the release item
We should not expose internal APIs or at least should explicitly mark them as internal in the documentation (e.g. APIs needed for plugin support only)
The list of APIs to be checked
keyexpr -> get_nonwild_prefix keyexpr -> is_wild keyexpr -> chunks keyexpr -> strip_prefix
publication.rs: Priority::MIN, Priority::MAX, Priority::NUM
WhatAmI matcher
ZenohId -> size, max_size, rand, into_keyexpr, to_le_bytes
Consider using #[doc(hidden)] attribute for them
WhatAmIMatcher is used as argument for zenoh::scout, so I think it can be removed from the list?
All functionality which is needed by some external crates but should not be part of public API should be moved into traits available through "internal" mod. Here is an example: https://github.com/eclipse-zenoh/zenoh/pull/1046
from @Mallets:
- [x]
buffersgoes to internal - [x]
ZBytesimpl forZSliceandZBufgoes to internal - [x]
zenoh::initgoes tointernal - [x]
pluginsgoes tointernal - [x]
runtimegoes tounstableandinternal
All functionality which is needed by some external crates but should not be part of public API should be moved into traits available through "internal" mod. Here is an example: #1046
Seems that #[cfg(all(feature = "unstable", feature="internal"))] is enough, no need to complicate with traits
Instead of #[cfg(all(feature = "unstable", feature="internal"))], I think we should annotate unstable items used internally with #[cfg(any(feature = "unstable", feature="internal"))]. It would allow to use "internal" items without needing to build with unstable feature.
(Of course, zenoh::internal module would only have #[cfg(feature = "internal)])