sp1_sdk/cpu/builder.rs
1//! # CPU Prover Builder
2//!
3//! This module provides a builder for the [`CpuProver`].
4
5use crate::utils::setup_memory_usage_monitoring;
6
7use super::CpuProver;
8
9/// A builder for the [`CpuProver`].
10///
11/// The builder is used to configure the [`CpuProver`] before it is built.
12pub struct CpuProverBuilder {
13 pub(crate) mock: bool,
14}
15
16impl CpuProverBuilder {
17 /// Builds a [`CpuProver`].
18 ///
19 /// # Details
20 /// This method will build a [`CpuProver`] with the given parameters. In particular, it will
21 /// build a mock prover if the `mock` flag is set.
22 ///
23 /// # Example
24 /// ```rust,no_run
25 /// use sp1_sdk::ProverClient;
26 ///
27 /// let prover = ProverClient::builder().mock().build();
28 /// ```
29 #[must_use]
30 pub fn build(self) -> CpuProver {
31 if self.mock {
32 CpuProver::mock()
33 } else {
34 setup_memory_usage_monitoring();
35 CpuProver::new()
36 }
37 }
38}