Substreams, the brainchild of StreamingFast, is a remarkably robust blockchain data processing engine. It harnesses the capabilities of Firehose to extract blockchain data and empowers developers to write Rust code for processing and storing this data. However, despite the impressive indexing technology that Substreams brings, developers are often hesitant to jump in because they worry about using Rust.
In this article, you’ll learn that Rust isn’t as intimidating as it might seem, especially when it comes to Substreams development. We’ll also explore the extent to which Rust is required to build Substreams and provide some valuable recommendations for learning Rust along the way.
Why so much fear around Rust?
Rust is a modern system programming language known for its safety, speed, and concurrency. Rust often earns a reputation for being challenging to learn due to its unwavering commitment to safety, its intricate syntax, and the introduction of unique concepts like ownership, references, borrowing, and lifetimes.
The fear of Rust often comes from misconceptions about its complexity and the learning curve associated with it. However, the complexities mentioned above come with significant advantages, and once you understand Rust’s unique features, it becomes less intimidating.
The investment in learning Rust is highly valuable not only because it offers you exceptional performance, but also because it forces you think about software development. While it may require some effort to grasp initially, Rust isn’t as complex as it might seem, especially when it comes to Substreams.
As Denis Carriere, engineer at Pinax, aptly puts it:
Learning Rust for manipulating blockchain data and building your first Substreams may seem daunting at first, but once you’ve mastered it, the once intimidating challenge becomes an approachable, gratifying skill.
Rust for Substreams developers
To work with Substreams effectively, you don’t need to become a Rust expert. Learning the basics of Rust is often sufficient. Here’s a list of general topics and concepts that you need to get you started:
- Variables: You need to understand how to declare and work with variables, including the difference between mutable and immutable variables.
- Data Types: A solid grasp of Rust’s data structures is essential. You should be familiar with basic types such as strings, characters, integers, floating point numbers, and Booleans. Additionally, a good understanding of compound data types like structs, arrays, tuples, and vectors is beneficial.
- Expressions: Understanding how to create and evaluate expressions in Rust is crucial.
- Control Flow: You’ll need to grasp how to implement conditional logic and loops to control the flow of your processes.
- Ownership: The concept of ownership is at the heart of Rust. It’s essential to understand how ownership works and how it affects your code.
- Modules: Familiarize yourself with how to structure and work with modules effectively, as they are essential for organizing your Rust code.
- Error Handling: Learn how Rust handles errors and exceptions to ensure the reliability of your applications.
- Working with Modules: Modules are organizational units in Rust. Familiarize yourself with how to structure and work with them effectively.
- Result and Option Enums: These are vital for managing success and error cases in your operations.
By gaining proficiency in these areas, you’ll be well equipped to navigate the world of Substreams without needing to master Rust entirely.
Best resources on the web to learn Rust
When embarking on the journey to master Rust, you have a wealth of excellent online learning materials at your disposal, thoughtfully curated to cater to learners of various expertise levels. You don’t need to explore all of them; simply select the one that aligns with your learning style and resonates with you:
- The Rust Programming Language (Book): For beginners and those looking to build a solid foundation, The Rust Programming Language book, often referred to as “the book,” is a fantastic starting point. It provides a comprehensive overview of Rust, introducing you to the language’s fundamentals.
- Rust by Example: Recommended by the team behind Substreams, Rust by Example is the official guide that covers almost everything you need to know about Rust.
- Rustlings: An educational project with a collection of small programming exercises focused on specific Rust language features and concepts, this GitHub resource is a hands-on way to practice and learn Rust.
- Comprehensive Rust: Developed by the Android team at Google, this free Rust course covers the full spectrum of Rust, from basic syntax to advanced topics like generics and error handling.
- Getting Started with Rust (YouTube Playlist): If you prefer video tutorials, this playlist is a great option for beginners who prefer a more visual approach.
Embrace Substreams, and don’t fear Rust
In the world of blockchain data processing, Substreams is a game changer. While Rust might seem intimidating, don’t allow it to stop you from fully utilizing Substreams. Embrace this powerful tech, and start indexing blockchain data with Substreams. To learn more about Substreams, visit Substreams docs today and unlock the potential of this cutting-edge technology!