Hi! I don’t want to start a rant here. Just want to share my concerns as new rust user.
My background:
I work as Unity3D game developer, I mostly use C# now. I used to do lots of iOS development with Objective-C and web-development with ruby. I always was interested in computer science, so I tried lots of not widespread languages in past years: haskell, clojure, erlang, ocaml, etc. I am interested in computer graphics and most of low-level computer graphics is done in C++ now.
That’s why one of my goals for this year is to refresh my C++ knowledge and adopt some modern C++. Rust looks like good alternative because it is so much simpler and explicit and has good performance which is a must for game dev/computer graphics.
I did some exercises in rust, wrote some small scripting tasks and it was pleasant experience mostly.
My concern with Rust is that some things in Rust are very difficult to do and current solutions don’t look natural.
Things like storing reference to the part of structure into the same structure (I know about owning_ref) or double-linked list in rust is implemented. I read a book http://cglab.ca/~abeinges/blah/too-many-lists/book/ and it is very well-written and interesting but the provided solution looks REALLY hard.
It reminds me experience with Monads in haskell. Yes, they definitely solve the problem with non-pure functions (state, IO, etc). Still they are very difficult to understand, they don’t compose very well (monadic transformers do suck). Monads.
I remember my experience with haskell where I wanted to do something simple like downloading some data from URL and I got some cabal package and expected it to have a function like getDataFromURL(url) and I looked into its documenation and it was based on some category theory concept like Applicative Functors or something like that and I felt myself very dumb at that moment.
It seems like Rust could be used only by experienced and smart developers. Which seems to be great but when you work on big commercial project, your team consists of developers of different skill level (including junior developers). Do you think if rust could be used in such projects?
Does anyone else has similar concerns of complexity of rust? What do you think about it?