# 1. Getting Started
RustyML is a machine learning and deep learning library written entirely in Rust: no BLAS to link, no Python runtime, no C++ bindings.
**Prerequisites.** You should be comfortable with `cargo`, Rust's ownership and borrowing, and the basic supervised loop (train, predict, evaluate). No prior `ndarray` experience is required — [1.3](./1.3._Working_with_ndarray.md) covers the part of it you need. Everything runs on Rust 1.89 or newer, with no system libraries to install.
[**1.1 What is RustyML**](./1.1._What_is_RustyML.md): a short tour of what RustyML offers (classical ML estimators, a Keras-style neural-network stack, preprocessing, evaluation metrics), and an honest account of the trade-offs pure Rust brings.
[**1.2 Installation and Feature Flags**](./1.2._Installation_and_Feature_Flags.md): what each feature means and which ones you should turn on.
[**1.3 Working with ndarray**](./1.3._Working_with_ndarray.md): a short introduction to `ndarray`. Every matrix RustyML takes in or hands back is an `ndarray` type, so knowing how to use `ndarray` is unavoidable.
[**1.4 Your First End-to-End Model**](./1.4._Your_First_End_to_End_Model.md): building a complete model pipeline with RustyML, hands on.
[**1.5 The Prelude and Imports**](./1.5._The_Prelude_and_Imports.md): how RustyML's prelude modules let you pull names into scope quickly.
[**1.6 Error Handling**](./1.6._Error_Handling.md): what RustyML's error type is, and how you should handle failures.