import React, { useState, useEffect } from 'react'; import RenderCodeBlock from '@theme/CodeBlock'; const CodeBlock = ({ example, file, section, language }) => { const [code, setCode] = useState(''); useEffect(() => { let isMounted = true; const path = file === 'manifest' ? 'Cargo.toml' : `src/${file ?? 'main.rs'}`; import(`!!raw-loader!@site/examples/${example}/${path}`) .then((source) => { source = source.default.match( new RegExp( `(?:\/\/|#) <${section}>\n([\\s\\S]*)(?:\/\/|#) <\/${section}>` ) )[1]; if (isMounted) setCode(source); }) .catch((err) => console.log(err)); return () => { isMounted = false; }; }, []); return ( {code} ); }; export default CodeBlock;