\todo{Introduction}

\todo{Primrose adaptations}

\section{Tooling integration}

As well as a standalone compiler, the Rust toolchain provides an official package manager, which is widely adopted.
We interface with cargo through the \code{cargo metadata} command, which allows us to work seamlessly with virtually any Rust project.

From cargo, we retrieve information about the user's project source directories, the available benchmarks and tests, and the location of the build cache.

\section{Cost model generation}

Generation of cost models is implemented in three locations:

\begin{itemize}
\item The \code{candelabra_benchmarker} crate, which provides code for benchmarking anything that implements the primrose library's traits
\item The \code{candelabra::cost::benchmark} module, which generates, runs, and parses benchmarks for container types in the primrose library
\item The \code{candelabra::cost::fit} module, which fits a linear regression model to a set of observations and allows for
\end{itemize}

\todo{Fitting of cost models}
\todo{Profiling wrapper}
\todo{Selection and comparison code}

\todo{Caching}
\todo{Other implementation details?}
