### Install diff.rs Crate Source: https://github.com/utkarshkukreti/diff.rs/blob/master/README.md This snippet shows how to add the `diff` crate as a dependency to your Rust project using Cargo.toml. It specifies version '0.1'. ```toml [dependencies] diff = "0.1" ``` -------------------------------- ### Ignore Configuration and Make Files Source: https://github.com/utkarshkukreti/diff.rs/blob/master/tests/data/gitignores.txt Ignores project-specific configuration files like config.toml, Makefile, config.mk, and config.stamp. It also ignores a flag indicating no LLVM build. ```gitignore /config.toml /Makefile config.mk config.stamp no_llvm_build ``` -------------------------------- ### Ignore Build and Distribution Files Source: https://github.com/utkarshkukreti/diff.rs/blob/master/tests/data/gitignores.txt Ignores directories and files generated during the build process, including temporary files (/tmp/, /obj/, *~, #*), output directories (/build/, /dist/, /target/), and documentation (/doc/). This ensures only source code is tracked. ```gitignore /dl/ /doc/ /inst/ /llvm/ /mingw-build/ /build/ /dist/ /unicode-downloads /target /src/tools/x/target /tmp/ /obj/ *~ #* #*# .#* ``` -------------------------------- ### Ignore Pattern Matching Files Source: https://github.com/utkarshkukreti/diff.rs/blob/master/tests/data/gitignores.txt This snippet includes patterns for ignoring files that start with '#' or have '#' characters, which might be used for temporary or backup files in some workflows. ```Git Ignore #* #*# ``` -------------------------------- ### Ignore Generated Files and IDE Configurations Source: https://github.com/utkarshkukreti/diff.rs/blob/master/tests/data/gitignores.txt This snippet covers common ignore patterns for Rust projects, including files generated by the build process (e.g., build artifacts, temporary files), IDE configurations (e.g., VS Code, IntelliJ), and editor swap files. ```Git Ignore # This file should only ignore things that are generated during a `x.py` build, # generated by common IDEs, and optional files controlled by the user that # affect the build (such as config.toml). # In particular, things like `mir_dump` should not be listed here; they are only # created during manual debugging and many people like to clean up instead of # having git ignore such leftovers. You can use `.git/info/exclude` to # configure your local ignore list. ## File system .DS_Store desktop.ini ## Editor *.swp *.swo Session.vim .cproject .idea *.iml .vscode .project .favorites.json .settings/ ## Tool .valgrindrc .cargo # Included because it is part of the test case !/src/test/run-make/thumb-none-qemu/example/.cargo ## Configuration /config.toml /Makefile config.mk config.stamp no_llvm_build ## Build /dl/ /doc/ /inst/ /llvm/ /mingw-build/ /build/ /dist/ /unicode-downloads /target /src/tools/x/target # Generated by compiletest for incremental /tmp/ # Created by default with `src/ci/docker/run.sh` /obj/ ## Temporary files *~ #* #*# .#* ## Tags tags tags.* TAGS TAGS.* ## Python __pycache__/ *.py[cod] *$py.class ## Node node_modules package-lock.json package.json ## Rustdoc GUI tests src/test/rustdoc-gui/src/**.lock ``` -------------------------------- ### Rust Line Diffing Example Source: https://github.com/utkarshkukreti/diff.rs/blob/master/README.md Demonstrates how to use the `diff::lines` function in Rust to compare two multi-line strings. It iterates through the differences, printing lines that were removed, added, or remained the same. ```rust extern crate diff; fn main() { let left = "foo\nbar\nbaz\nquux"; let right = "foo\nbaz\nbar\nquux"; for diff in diff::lines(left, right) { match diff { diff::Result::Left(l) => println!("-{}", l), diff::Result::Both(l, _) => println!(" {}", l), diff::Result::Right(r) => println!("+{}", r) } } } ``` -------------------------------- ### Rust Build Ignore Patterns Source: https://github.com/utkarshkukreti/diff.rs/blob/master/tests/data/gitignores.txt This snippet contains a comprehensive list of file and directory patterns commonly ignored in Rust projects. These patterns help maintain a clean repository by excluding build artifacts, IDE configurations, temporary files, and OS-specific files. ```Git Ignore # Created during manual debugging and many people like to clean up instead of # having git ignore such leftovers. You can use `.git/info/exclude` to # configure your local ignore list. # FIXME: This needs cleanup. *~ .#* .DS_Store .cproject .hg/ .hgignore .idea *.iml __pycache__/ *.py[cod] *$py.class .project .settings/ .valgrindrc .vscode .favorites.json /Makefile /build/ /config.toml /dist/ /dl/ /doc/ /inst/ /llvm/ /mingw-build/ # Created by default with `src/ci/docker/run.sh`: /obj/ /rustllvm/ /unicode-downloads /target # Generated by compiletest for incremental: /tmp/ tags tags.* TAGS TAGS.* #* #*# config.mk config.stamp Session.vim .cargo !/src/test/run-make/thumb-none-qemu/example/.cargo no_llvm_build # Before adding new lines, see the comment at the top. !!! # This file should only ignore things that are generated during a `x.py` build, generated by common IDEs, and optional files controlled by the user that affect the build (such as config.toml). # In particular, things like `mir_dump` should not be listed here; they are only created during manual debugging and many people like to clean up instead of having git ignore such leftovers. You can use `.git/info/exclude` to configure your local ignore list. # FIXME: This needs cleanup. *~ .#* .DS_Store .cproject .hg/ .hgignore .idea *.iml __pycache__/ *.py[cod] *$py.class .project .settings/ .valgrindrc .vscode .favorites.json /Makefile /build/ /config.toml /dist/ /dl/ /doc/ /inst/ /llvm/ /mingw-build/ # Created by default with `src/ci/docker/run.sh`: /obj/ /rustllvm/ /unicode-downloads /target # Generated by compiletest for incremental: /tmp/ tags tags.* TAGS TAGS.* #* #*# config.mk config.stamp Session.vim .cargo !/src/test/run-make/thumb-none-qemu/example/.cargo no_llvm_build # Before adding new lines, see the comment at the top. !!! # This file should only ignore things that are generated during a `x.py` build, generated by common IDEs, and optional files controlled by the user that affect the build (such as config.toml). # In particular, things like `mir_dump` should not be listed here; they are only created during manual debugging and many people like to clean up instead of having git ignore such leftovers. You can use `.git/info/exclude` to configure your local ignore list. # FIXME: This needs cleanup. *~ .#* .DS_Store .cproject .hg/ .hgignore .idea *.iml __pycache__/ *.py[cod] *$py.class .project .settings/ .valgrindrc .vscode .favorites.json /Makefile /build/ /config.toml /dist/ /dl/ /doc/ /inst/ /llvm/ /mingw-build/ # Created by default with `src/ci/docker/run.sh`: /obj/ /rustllvm/ /src/libcore/unicode/DerivedCoreProperties.txt /src/libcore/unicode/DerivedNormalizationProps.txt /src/libcore/unicode/PropList.txt /src/libcore/unicode/ReadMe.txt /src/libcore/unicode/Scripts.txt /src/libcore/unicode/SpecialCasing.txt /src/libcore/unicode/UnicodeData.txt /src/libcore/unicode/downloaded /target/ # Generated by compiletest for incremental: /tmp/ tags tags.* TAGS TAGS.* #* #*# config.mk config.stamp Session.vim .cargo !/src/test/run-make/thumb-none-qemu/example/.cargo no_llvm_build # Before adding new lines, see the comment at the top. !!! # This file should only ignore things that are generated during a `x.py` build, generated by common IDEs, and optional files controlled by the user that affect the build (such as config.toml). # In particular, things like `mir_dump` should not be listed here; they are only created during manual debugging and many people like to clean up instead of having git ignore such leftovers. You can use `.git/info/exclude` to configure your local ignore list. # FIXME: This needs cleanup. *~ .#* .DS_Store .cproject .hg/ .hgignore .idea *.iml __pycache__/ *.py[cod] *$py.class .project .settings/ .valgrindrc .vscode .favorites.json /Makefile /build/ /config.toml /dist/ /dl/ /doc/ /inst/ /llvm/ /mingw-build/ ``` -------------------------------- ### Rust Project File and Directory Exclusions Source: https://github.com/utkarshkukreti/diff.rs/blob/master/tests/data/gitignores.txt This snippet lists common files and directories that are typically excluded from version control or build processes in Rust projects. These include build artifacts (e.g., `target/`), temporary files, IDE configurations (e.g., `.vscode/`, `.idea/`), and version control metadata (e.g., `.git/`). ```gitignore # FIXME: This needs cleanup. *~ .#* .DS_Store .cproject .hg/ .hgignore .idea *.iml __pycache__/ *.py[cod] *$py.class .project .settings/ .valgrindrc .vscode/ .favorites.json /*-*-*-*/ /*-*-*/ /Makefile /build /config.toml /dist/ /dl/ /doc /inst/ /llvm/ /mingw-build/ /nd/ /obj/ /rt/ /rustllvm/ /src/libcore/unicode/DerivedCoreProperties.txt /src/libcore/unicode/DerivedNormalizationProps.txt /src/libcore/unicode/PropList.txt /src/libcore/unicode/ReadMe.txt /src/libcore/unicode/Scripts.txt /src/libcore/unicode/SpecialCasing.txt /src/libcore/unicode/UnicodeData.txt /src/libcore/unicode/downloaded /stage[0-9]+/ /target target/ /test/ /tmp/ tags tags.* TAGS TAGS.* #* #*# config.mk config.stamp keywords.md lexer.ml mir_dump Session.vim src/etc/dl tmp.*.rs version.md version.ml version.texi .cargo !src/vendor/** /src/target/ no_llvm_build !!! ``` -------------------------------- ### Ignore IDE and Project Configuration Files Source: https://github.com/utkarshkukreti/diff.rs/blob/master/tests/data/gitignores.txt Ignores configuration files and directories generated by Integrated Development Environments (IDEs) such as .vscode, .idea, .project, .settings/, and *.iml. These are project-specific settings that should not be shared. ```gitignore *.swp *.swo Session.vim .cproject .idea *.iml .vscode .project .favorites.json .settings/ ``` -------------------------------- ### Ignore Rust Build Artifacts and IDE Files Source: https://github.com/utkarshkukreti/diff.rs/blob/master/tests/data/gitignores.txt This snippet lists common file and directory patterns that should be ignored by version control systems in a Rust project. It includes build outputs, IDE configuration files, and temporary files generated during development. ```gitignore # FIXME: This needs cleanup. *~ .#* .DS_Store .cproject .project .settings/ .vscode .favorites.json *.iml __pycache__/ *.py[cod] *$py.class Session.vim ``` ```gitignore # Version control specific files .hg/ .hgignore .git/ .gitignore ``` ```gitignore # Build and output directories /Makefile /build /dist/ /dl/ /inst/ /mingw-build/ /rustllvm/ /src/target/ no_llvm_build !src/vendor/** ``` ```gitignore # Configuration and documentation files /config.toml /doc config.mk config.stamp ``` ```gitignore # LLVM and Unicode data files /llvm/ /rustllvm/ /src/libcore/unicode/DerivedCoreProperties.txt /src/libcore/unicode/DerivedNormalizationProps.txt /src/libcore/unicode/PropList.txt /src/libcore/unicode/ReadMe.txt /src/libcore/unicode/Scripts.txt /src/libcore/unicode/SpecialCasing.txt /src/libcore/unicode/UnicodeData.txt /src/libcore/unicode/downloaded ``` ```gitignore # Tags and temporary files tags tags.* TAGS TAGS.* #* #*# ``` ```gitignore # Other ignored files .valgrindrc src/etc/dl .cargo ``` -------------------------------- ### Ignore Common Editor and System Files Source: https://github.com/utkarshkukreti/diff.rs/blob/master/tests/data/gitignores.txt Ignores files commonly generated by text editors (e.g., *.swp, Session.vim) and operating systems (e.g., .DS_Store, desktop.ini). These files are specific to the user's environment and should not be version controlled. ```gitignore *.swp *.swo Session.vim .DS_Store desktop.ini ``` -------------------------------- ### Ignore IDE and Editor Configuration Files Source: https://github.com/utkarshkukreti/diff.rs/blob/master/tests/data/gitignores.txt This section lists common files and directories generated by Integrated Development Environments (IDEs) and text editors that should be ignored to maintain a clean project repository. ```Git Ignore .hg/ .hgignore .idea *.iml __pycache__/ *.py[cod] *$py.class .project .settings/ .valgrindrc .vscode .favorites.json ```