{"record":{"id":"3c43554729d08931","repo":"typst/typst","slug":"expected-2-delimiters-found","errorCode":null,"errorMessage":"expected 2 delimiters, found {}","messagePattern":"expected 2 delimiters, found (.+?)","errorType":"validation","errorClass":"EcoString","httpStatus":null,"severity":"error","filePath":"crates/typst-library/src/math/matrix.rs","lineNumber":345,"sourceCode":"/// A pair of delimiters (one closing, one opening) used for matrices, vectors\n/// and cases.\n#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)]\npub struct DelimiterPair {\n    open: Delimiter,\n    close: Delimiter,\n}\n\ncast! {\n    DelimiterPair,\n\n    self => array![self.open, self.close].into_value(),\n\n    v: Array => match v.as_slice() {\n        [open, close] => Self {\n            open: open.clone().cast()?,\n            close: close.clone().cast()?,\n        },\n        _ => bail!(\"expected 2 delimiters, found {}\", v.len())\n    },\n    v: Delimiter => Self { open: v, close: v.find_matching() }\n}\n\nimpl DelimiterPair {\n    const PAREN: Self = Self {\n        open: Delimiter(Some('(')),\n        close: Delimiter(Some(')')),\n    };\n    const BRACE: Self = Self {\n        open: Delimiter(Some('{')),\n        close: Delimiter(Some('}')),\n    };\n\n    /// The delimiter's opening character.\n    pub fn open(self) -> Option<char> {\n        self.open.get()\n    }","sourceCodeStart":327,"sourceCodeEnd":363,"githubUrl":"https://github.com/typst/typst/blob/35417aa769ab9d699a60384f91082b09bc6ba421/crates/typst-library/src/math/matrix.rs#L327-L363","documentation":"Raised while casting an array to DelimiterPair: the array must contain exactly two delimiters (open and close); a different number was found.","triggerScenarios":"Thrown at crates/typst-library/src/math/matrix.rs:345 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Provide exactly two delimiters, e.g. `(`, `]`","Pass a single delimiter value to use it (or its match) on both sides"],"exampleFix":null,"handlingStrategy":"type-guard","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"35417aa769ab9d699a60384f91082b09bc6ba421","analyzedAt":"2026-08-17T21:03:48.984Z","contentChangedAt":"2026-08-17T21:03:48.984Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}