It's funny because, I'm probably the minority, but I strongly prefer JetBrains IDEs.
Which ironically are much more "walled gardens": closed-source and subscription-based, with only a limited subset of parts and plugins open-source. But JetBrains has a good track record of not enshittifying and, because you actually pay for their product, they can make a profitable business off not doing so.
I could understand method = associated function whose first parameter is named
self
, so it can be called likeself.foo(…)
. This would mean functions likeVec::new
aren’t methods. But the author’s requirement also excludes functions that take generic arguments likeExtend::extend
.However, even the above definition gives old terminology new meaning. In traditionally OOP languages, all functions in a class are considered methods, those only callable from an instance are “instance methods”, while the others are “static methods”. So translating OOP terminology into Rust, all associated functions are still considered methods, and those with/without method call syntax are instance/static methods.
Unfortunately I think that some people misuse “method” to only refer to “instance method”, even in the OOP languages, so to be 100% unambiguous the terms have to be:
impl
block.self
(even if it takesSelf
under a different name, likeBox::leak
).self
, so it can be called likeself.foo(…)
.