[x] Always return azure_core::Result from client methods.
[x] When to use impl Into<String> vs. impl AsRef<str>. Are there clear guidelines for when to use Cow<'_, str>?
[x] We should get rid of preludes. See internal discussion for context. Basically, too much ambiguity and risk of name collisions.
[x] Pageables should be reconstitutable. Does this mean, like Go, we have separate iterators for each page and each item within each page? I think we can support both that and simple iterators like .NET's enumerables. Rust is low-level but chalk full of helpful higher-level abstractions.
Comparing with AWS at https://docs.aws.amazon.com/sdk-for-rust/latest/dg/paginating.html, I think returning an IntoIterator<T> makes much more sense and is more idiomatic. We could still achieve reconstitutable pageables by taking in a nextLink (much like taking a status monitor URL for an LRO) and pick up where you left off. You can use any of the many Iterator methods to skip, take, collect, etc.
[x] LROs should be reconstitutable. This is being driven across languages.
[x] When we allow macros and why they are safe in Rust (provide link)
[x] Defining cargo lints and inheriting from workspace for lints, dependencies, etc.
[x] Builders can still be used for special purposes like SAS URL builders.
[ ] Models should go into models module keeping the client and convenience helpers in the crate root.
[ ] Convenience layers need to be able to merge with generated source. We can look to the existing source for some ideas here.
See https://github.com/Azure/azure-sdk-for-rust/issues?q=is:issue%20label:guidelines for a list of issues to consider.
Things to consider:
azure_core::Result
from client methods.impl Into<String>
vs.impl AsRef<str>
. Are there clear guidelines for when to useCow<'_, str>
?IntoIterator<T>
makes much more sense and is more idiomatic. We could still achieve reconstitutable pageables by taking in anextLink
(much like taking a status monitor URL for an LRO) and pick up where you left off. You can use any of the manyIterator
methods to skip, take, collect, etc.models
module keeping the client and convenience helpers in the crate root.