Repository: vercel/next.js
File: crates/next-api/src/nft_json.rs (Rust)

Code before:
    fn title(&self) -> Vc<StyledString> {
        StyledString::Text(rcstr!("Encountered unexpected file in NFT list")).cell()
    }

    #[turbo_tasks::function]
    async fn description(&self) -> Result<Vc<OptionStyledString>> {
        let mut stack = vec![
            StyledString::Text(rcstr!(
                "A file was traced that indicates that the whole project was traced \
                 unintentionally. Somewhere in the import trace below, there are:"
            )),
            StyledString::Line(vec![
                StyledString::Text(rcstr!("- filesystem operations (like ")),
                StyledString::Code(rcstr!("path.join")),
                StyledString::Text(rcstr!(", ")),
                StyledString::Code(rcstr!("path.resolve")),
                StyledString::Text(rcstr!(" or ")),
                StyledString::Code(rcstr!("fs.readFile")),
                StyledString::Text(rcstr!("), or")),
            ]),
            StyledString::Line(vec![
                StyledString::Text(rcstr!("- very dynamic requires (like ")),
                StyledString::Code(rcstr!("require('./' + foo)")),
                StyledString::Text(rcstr!(").")),
            ]),
            StyledString::Text(rcstr!("To resolve this, you can either")),
            StyledString::Text(rcstr!("- remove them if possible, or")),
            StyledString::Text(rcstr!("- only use them in development, or")),
            StyledString::Line(vec![
                StyledString::Text(rcstr!(
                    "- make sure they are statically scoped to some subfolder: "
                )),
                StyledString::Code(rcstr!("path.join(process.cwd(), 'data', bar)")),
                StyledString::Text(rcstr!(", or")),
            ]),
            StyledString::Line(vec![
                StyledString::Text(rcstr!("- add ignore comments: ")),
                StyledString::Code(rcstr!(
                    "path.join(/*turbopackIgnore: true*/ process.cwd(), bar)"
                )),
            ]),
        ];

        if self.path.len() > 1 {
            stack.extend([
                StyledString::Text(rcstr!("")),
                StyledString::Text(
                    format!(
                        "Output asset trace:\n{}",
                        self.path
                            .iter()

Review comment (suggestion):
Nit, grammar: "either" implies one of exactly two options, but there are three options.

```suggestion
            StyledString::Text(rcstr!("To resolve this, you can")),
```

Code after:
    fn title(&self) -> Vc<StyledString> {
        StyledString::Text(rcstr!("Encountered unexpected file in NFT list")).cell()
    }

    #[turbo_tasks::function]
    async fn description(&self) -> Result<Vc<OptionStyledString>> {
        let mut stack = vec![
            StyledString::Text(rcstr!(
                "A file was traced that indicates that the whole project was traced \
                 unintentionally. Somewhere in the import trace below, there are:"
            )),
            StyledString::Line(vec![
                StyledString::Text(rcstr!("- filesystem operations (like ")),
                StyledString::Code(rcstr!("path.join")),
                StyledString::Text(rcstr!(", ")),
                StyledString::Code(rcstr!("path.resolve")),
                StyledString::Text(rcstr!(" or ")),
                StyledString::Code(rcstr!("fs.readFile")),
                StyledString::Text(rcstr!("), or")),
            ]),
            StyledString::Line(vec![
                StyledString::Text(rcstr!("- very dynamic requires (like ")),
                StyledString::Code(rcstr!("require('./' + foo)")),
                StyledString::Text(rcstr!(").")),
            ]),
            StyledString::Text(rcstr!("To resolve this, you can")),
            StyledString::Text(rcstr!("- remove them if possible, or")),
            StyledString::Text(rcstr!("- only use them in development, or")),
            StyledString::Line(vec![
                StyledString::Text(rcstr!(
                    "- make sure they are statically scoped to some subfolder: "
                )),
                StyledString::Code(rcstr!("path.join(process.cwd(), 'data', bar)")),
                StyledString::Text(rcstr!(", or")),
            ]),
            StyledString::Line(vec![
                StyledString::Text(rcstr!("- add ignore comments: ")),
                StyledString::Code(rcstr!(
                    "path.join(/*turbopackIgnore: true*/ process.cwd(), bar)"
                )),
            ]),
        ];

        if self.path.len() > 1 {
            stack.extend([
                StyledString::Text(rcstr!("")),
                StyledString::Text(
                    format!(
                        "Output asset trace:\n{}",
                        self.path
                            .iter()