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}