[workspace]
members = [".", "crates/igraph-wasm"]
[package]
name = "rust-igraph"
version = "0.7.0"
edition = "2024"
rust-version = "1.85"
license = "GPL-2.0-or-later"
description = "Pure-Rust, high-performance graph & network analysis library — 1297 APIs, zero unsafe, igraph-compatible"
repository = "https://github.com/Totoro-jam/rust-igraph"
homepage = "https://Totoro-jam.github.io/rust-igraph"
documentation = "https://docs.rs/rust-igraph"
readme = "README.md"
keywords = ["graph", "network-analysis", "igraph", "graph-algorithms", "complex-networks"]
categories = ["algorithms", "data-structures", "science", "mathematics"]
authors = ["rust-igraph contributors"]
include = [
"/src/**/*.rs",
"/examples/**/*.rs",
"/fixtures/karate.edges",
"/Cargo.toml",
"/README.md",
"/LICENSE",
"/CHANGELOG.md",
]
[features]
default = []
oracle-tests = []
proptest-harness = []
[dependencies]
thiserror = "2"
[dev-dependencies]
serde = { version = "1", features = ["derive"] }
serde_json = "1"
proptest = "1"
criterion = "0.5"
[[example]]
name = "bfs_karate"
path = "examples/bfs_karate.rs"
[[example]]
name = "max_flow_demo"
path = "examples/max_flow_demo.rs"
[[example]]
name = "st_mincut_demo"
path = "examples/st_mincut_demo.rs"
[[example]]
name = "st_edge_connectivity_demo"
path = "examples/st_edge_connectivity_demo.rs"
[[example]]
name = "edge_disjoint_paths_demo"
path = "examples/edge_disjoint_paths_demo.rs"
[[example]]
name = "st_vertex_connectivity_demo"
path = "examples/st_vertex_connectivity_demo.rs"
[[example]]
name = "vertex_disjoint_paths_demo"
path = "examples/vertex_disjoint_paths_demo.rs"
[[example]]
name = "vertex_connectivity_demo"
path = "examples/vertex_connectivity_demo.rs"
[[example]]
name = "edge_connectivity_demo"
path = "examples/edge_connectivity_demo.rs"
[[example]]
name = "mincut_value_demo"
path = "examples/mincut_value_demo.rs"
[[example]]
name = "dominator_tree_demo"
path = "examples/dominator_tree_demo.rs"
[[example]]
name = "all_st_cuts_demo"
path = "examples/all_st_cuts_demo.rs"
[[example]]
name = "hsbm_demo"
path = "examples/hsbm_demo.rs"
[[example]]
name = "chung_lu_demo"
path = "examples/chung_lu_demo.rs"
[[example]]
name = "establishment_demo"
path = "examples/establishment_demo.rs"
[[example]]
name = "callaway_traits_demo"
path = "examples/callaway_traits_demo.rs"
[[example]]
name = "cited_type_demo"
path = "examples/cited_type_demo.rs"
[[example]]
name = "lastcit_demo"
path = "examples/lastcit_demo.rs"
[[example]]
name = "recent_degree_demo"
path = "examples/recent_degree_demo.rs"
[[example]]
name = "recent_degree_aging_demo"
path = "examples/recent_degree_aging_demo.rs"
[[example]]
name = "barabasi_aging_demo"
path = "examples/barabasi_aging_demo.rs"
[[example]]
name = "dot_product_demo"
path = "examples/dot_product_demo.rs"
[[example]]
name = "correlated_pair_demo"
path = "examples/correlated_pair_demo.rs"
[[example]]
name = "degree_sequence_demo"
path = "examples/degree_sequence_demo.rs"
[[example]]
name = "degree_sequence_vl_demo"
path = "examples/degree_sequence_vl_demo.rs"
[[example]]
name = "degree_sequence_fast_heur_demo"
path = "examples/degree_sequence_fast_heur_demo.rs"
[[example]]
name = "degree_sequence_configuration_simple_demo"
path = "examples/degree_sequence_configuration_simple_demo.rs"
[[example]]
name = "degree_sequence_edge_switching_simple_demo"
path = "examples/degree_sequence_edge_switching_simple_demo.rs"
[[example]]
name = "wheel_demo"
path = "examples/wheel_demo.rs"
[[example]]
name = "kary_tree_demo"
path = "examples/kary_tree_demo.rs"
[[example]]
name = "symmetric_tree_demo"
path = "examples/symmetric_tree_demo.rs"
[[example]]
name = "regular_tree_demo"
path = "examples/regular_tree_demo.rs"
[[example]]
name = "hypercube_demo"
path = "examples/hypercube_demo.rs"
[[example]]
name = "hamming_demo"
path = "examples/hamming_demo.rs"
[[example]]
name = "square_lattice_demo"
path = "examples/square_lattice_demo.rs"
[[example]]
name = "hexagonal_lattice_demo"
path = "examples/hexagonal_lattice_demo.rs"
[[example]]
name = "generalized_petersen_demo"
path = "examples/generalized_petersen_demo.rs"
[[example]]
name = "circulant_demo"
path = "examples/circulant_demo.rs"
[[example]]
name = "de_bruijn_demo"
path = "examples/de_bruijn_demo.rs"
[[example]]
name = "kautz_demo"
path = "examples/kautz_demo.rs"
[[example]]
name = "full_demo"
path = "examples/full_demo.rs"
[[example]]
name = "full_citation_demo"
path = "examples/full_citation_demo.rs"
[[example]]
name = "full_multipartite_demo"
path = "examples/full_multipartite_demo.rs"
[[example]]
name = "turan_demo"
path = "examples/turan_demo.rs"
[[example]]
name = "linegraph_demo"
path = "examples/linegraph_demo.rs"
[[example]]
name = "prufer_demo"
path = "examples/prufer_demo.rs"
[[example]]
name = "mycielskian_demo"
path = "examples/mycielskian_demo.rs"
[[example]]
name = "famous_demo"
path = "examples/famous_demo.rs"
[[example]]
name = "atlas_demo"
path = "examples/atlas_demo.rs"
[[example]]
name = "create_demo"
path = "examples/create_demo.rs"
[[example]]
name = "adjacency_demo"
path = "examples/adjacency_demo.rs"
[[example]]
name = "weighted_adjacency_demo"
path = "examples/weighted_adjacency_demo.rs"
[[example]]
name = "iea_game_demo"
path = "examples/iea_game_demo.rs"
[[example]]
name = "simple_paths_demo"
path = "examples/simple_paths_demo.rs"
[[example]]
name = "layout_demo"
path = "examples/layout_demo.rs"
[[example]]
name = "centralization_demo"
path = "examples/centralization_demo.rs"
[[example]]
name = "graphicality_demo"
path = "examples/graphicality_demo.rs"
[[example]]
name = "strength_demo"
path = "examples/strength_demo.rs"
[[example]]
name = "trussness_demo"
path = "examples/trussness_demo.rs"
[[example]]
name = "social_network_demo"
path = "examples/social_network_demo.rs"
[[example]]
name = "quickstart"
path = "examples/quickstart.rs"
[[example]]
name = "summary_demo"
path = "examples/summary_demo.rs"
[[example]]
name = "method_api_demo"
path = "examples/method_api_demo.rs"
[[example]]
name = "community_detection_demo"
path = "examples/community_detection_demo.rs"
[[bench]]
name = "bench_bfs"
path = "benches/bench_bfs.rs"
harness = false
[[bench]]
name = "bench_dfs"
path = "benches/bench_dfs.rs"
harness = false
[[bench]]
name = "bench_cc"
path = "benches/bench_cc.rs"
harness = false
[[bench]]
name = "bench_scc"
path = "benches/bench_scc.rs"
harness = false
[[bench]]
name = "bench_distances"
path = "benches/bench_distances.rs"
harness = false
[[bench]]
name = "bench_eulerian"
path = "benches/bench_eulerian.rs"
harness = false
[[bench]]
name = "bench_articulation"
path = "benches/bench_articulation.rs"
harness = false
[[bench]]
name = "bench_bridges"
path = "benches/bench_bridges.rs"
harness = false
[[bench]]
name = "bench_girth"
path = "benches/bench_girth.rs"
harness = false
[[bench]]
name = "bench_radii"
path = "benches/bench_radii.rs"
harness = false
[[bench]]
name = "bench_triangles"
path = "benches/bench_triangles.rs"
harness = false
[[bench]]
name = "bench_hits"
path = "benches/bench_hits.rs"
harness = false
[[bench]]
name = "bench_hits_weighted"
path = "benches/bench_hits_weighted.rs"
harness = false
[[bench]]
name = "bench_eigenvector"
path = "benches/bench_eigenvector.rs"
harness = false
[[bench]]
name = "bench_louvain"
path = "benches/bench_louvain.rs"
harness = false
[[bench]]
name = "bench_leiden"
path = "benches/bench_leiden.rs"
harness = false
[[bench]]
name = "bench_lpa"
path = "benches/bench_lpa.rs"
harness = false
[[bench]]
name = "bench_fluid"
path = "benches/bench_fluid.rs"
harness = false
[[bench]]
name = "bench_eb_community"
path = "benches/bench_eb_community.rs"
harness = false
[[bench]]
name = "bench_eb_community_weighted"
path = "benches/bench_eb_community_weighted.rs"
harness = false
[[bench]]
name = "bench_fast_greedy"
path = "benches/bench_fast_greedy.rs"
harness = false
[[bench]]
name = "bench_walktrap"
path = "benches/bench_walktrap.rs"
harness = false
[[bench]]
name = "bench_community_to_membership"
path = "benches/bench_community_to_membership.rs"
harness = false
[[bench]]
name = "bench_reindex_membership"
path = "benches/bench_reindex_membership.rs"
harness = false
[[bench]]
name = "bench_compare_communities"
path = "benches/bench_compare_communities.rs"
harness = false
[[bench]]
name = "bench_split_join_distance"
path = "benches/bench_split_join_distance.rs"
harness = false
[[bench]]
name = "bench_voronoi"
path = "benches/bench_voronoi.rs"
harness = false
[[bench]]
name = "bench_ecc"
path = "benches/bench_ecc.rs"
harness = false
[[bench]]
name = "bench_rich_club"
path = "benches/bench_rich_club.rs"
harness = false
[[bench]]
name = "bench_pagerank_linsys"
path = "benches/bench_pagerank_linsys.rs"
harness = false
[[bench]]
name = "bench_community_voronoi"
path = "benches/bench_community_voronoi.rs"
harness = false
[[bench]]
name = "bench_mst"
path = "benches/bench_mst.rs"
harness = false
[[bench]]
name = "bench_erdos_renyi"
path = "benches/bench_erdos_renyi.rs"
harness = false
[[bench]]
name = "bench_barabasi"
path = "benches/bench_barabasi.rs"
harness = false
[[bench]]
name = "bench_growing_random"
path = "benches/bench_growing_random.rs"
harness = false
[[bench]]
name = "bench_tree_game"
path = "benches/bench_tree_game.rs"
harness = false
[[bench]]
name = "bench_grg"
path = "benches/bench_grg.rs"
harness = false
[[bench]]
name = "bench_forestfire"
path = "benches/bench_forestfire.rs"
harness = false
[[bench]]
name = "bench_bipartite_game"
path = "benches/bench_bipartite_game.rs"
harness = false
[[bench]]
name = "bench_iea_game"
path = "benches/bench_iea_game.rs"
harness = false
[[bench]]
name = "bench_max_flow"
path = "benches/bench_max_flow.rs"
harness = false
[[bench]]
name = "bench_st_mincut"
path = "benches/bench_st_mincut.rs"
harness = false
[[bench]]
name = "bench_gomory_hu_tree"
path = "benches/bench_gomory_hu_tree.rs"
harness = false
[[bench]]
name = "bench_dominator_tree"
path = "benches/bench_dominator_tree.rs"
harness = false
[[bench]]
name = "bench_all_st_cuts"
path = "benches/bench_all_st_cuts.rs"
harness = false
[[bench]]
name = "bench_all_st_mincuts"
path = "benches/bench_all_st_mincuts.rs"
harness = false
[[bench]]
name = "bench_minimum_size_separators"
path = "benches/bench_minimum_size_separators.rs"
harness = false
[[bench]]
name = "bench_st_edge_connectivity"
path = "benches/bench_st_edge_connectivity.rs"
harness = false
[[bench]]
name = "bench_edge_disjoint_paths"
path = "benches/bench_edge_disjoint_paths.rs"
harness = false
[[bench]]
name = "bench_st_vertex_connectivity"
path = "benches/bench_st_vertex_connectivity.rs"
harness = false
[[bench]]
name = "bench_vertex_disjoint_paths"
path = "benches/bench_vertex_disjoint_paths.rs"
harness = false
[[bench]]
name = "bench_vertex_connectivity"
path = "benches/bench_vertex_connectivity.rs"
harness = false
[[bench]]
name = "bench_edge_connectivity"
path = "benches/bench_edge_connectivity.rs"
harness = false
[[bench]]
name = "bench_mincut_value"
path = "benches/bench_mincut_value.rs"
harness = false
[[bench]]
name = "bench_barabasi_psumtree"
path = "benches/bench_barabasi_psumtree.rs"
harness = false
[[bench]]
name = "bench_barabasi_aging"
path = "benches/bench_barabasi_aging.rs"
harness = false
[[bench]]
name = "bench_dot_product"
path = "benches/bench_dot_product.rs"
harness = false
[[bench]]
name = "bench_correlated"
path = "benches/bench_correlated.rs"
harness = false
[[bench]]
name = "bench_degree_sequence"
path = "benches/bench_degree_sequence.rs"
harness = false
[[bench]]
name = "bench_degree_sequence_vl"
path = "benches/bench_degree_sequence_vl.rs"
harness = false
[[bench]]
name = "bench_degree_sequence_fast_heur"
path = "benches/bench_degree_sequence_fast_heur.rs"
harness = false
[[bench]]
name = "bench_degree_sequence_configuration_simple"
path = "benches/bench_degree_sequence_configuration_simple.rs"
harness = false
[[bench]]
name = "bench_degree_sequence_edge_switching_simple"
path = "benches/bench_degree_sequence_edge_switching_simple.rs"
harness = false
[[bench]]
name = "bench_islands"
path = "benches/bench_islands.rs"
harness = false
[[bench]]
name = "bench_k_regular"
path = "benches/bench_k_regular.rs"
harness = false
[[bench]]
name = "bench_watts"
path = "benches/bench_watts.rs"
harness = false
[[bench]]
name = "bench_sbm"
path = "benches/bench_sbm.rs"
harness = false
[[bench]]
name = "bench_hsbm"
path = "benches/bench_hsbm.rs"
harness = false
[[bench]]
name = "bench_chung_lu"
path = "benches/bench_chung_lu.rs"
harness = false
[[bench]]
name = "bench_static_fitness"
path = "benches/bench_static_fitness.rs"
harness = false
[[bench]]
name = "bench_preference"
path = "benches/bench_preference.rs"
harness = false
[[bench]]
name = "bench_establishment"
path = "benches/bench_establishment.rs"
harness = false
[[bench]]
name = "bench_callaway_traits"
path = "benches/bench_callaway_traits.rs"
harness = false
[[bench]]
name = "bench_cited_type"
path = "benches/bench_cited_type.rs"
harness = false
[[bench]]
name = "bench_citing_cited_type"
path = "benches/bench_citing_cited_type.rs"
harness = false
[[bench]]
name = "bench_lastcit"
path = "benches/bench_lastcit.rs"
harness = false
[[bench]]
name = "bench_recent_degree"
path = "benches/bench_recent_degree.rs"
harness = false
[[bench]]
name = "bench_recent_degree_aging"
path = "benches/bench_recent_degree_aging.rs"
harness = false
[[bench]]
name = "bench_ring"
path = "benches/bench_ring.rs"
harness = false
[[bench]]
name = "bench_star"
path = "benches/bench_star.rs"
harness = false
[[bench]]
name = "bench_wheel"
path = "benches/bench_wheel.rs"
harness = false
[[bench]]
name = "bench_kary_tree"
path = "benches/bench_kary_tree.rs"
harness = false
[[bench]]
name = "bench_symmetric_tree"
path = "benches/bench_symmetric_tree.rs"
harness = false
[[bench]]
name = "bench_regular_tree"
path = "benches/bench_regular_tree.rs"
harness = false
[[bench]]
name = "bench_hypercube"
path = "benches/bench_hypercube.rs"
harness = false
[[bench]]
name = "bench_hamming"
path = "benches/bench_hamming.rs"
harness = false
[[bench]]
name = "bench_square_lattice"
path = "benches/bench_square_lattice.rs"
harness = false
[[bench]]
name = "bench_triangular_lattice"
path = "benches/bench_triangular_lattice.rs"
harness = false
[[bench]]
name = "bench_hexagonal_lattice"
path = "benches/bench_hexagonal_lattice.rs"
harness = false
[[bench]]
name = "bench_generalized_petersen"
path = "benches/bench_generalized_petersen.rs"
harness = false
[[bench]]
name = "bench_circulant"
path = "benches/bench_circulant.rs"
harness = false
[[bench]]
name = "bench_de_bruijn"
path = "benches/bench_de_bruijn.rs"
harness = false
[[bench]]
name = "bench_kautz"
path = "benches/bench_kautz.rs"
harness = false
[[bench]]
name = "bench_full"
path = "benches/bench_full.rs"
harness = false
[[bench]]
name = "bench_full_citation"
path = "benches/bench_full_citation.rs"
harness = false
[[bench]]
name = "bench_full_multipartite"
path = "benches/bench_full_multipartite.rs"
harness = false
[[bench]]
name = "bench_turan"
path = "benches/bench_turan.rs"
harness = false
[[bench]]
name = "bench_extended_chordal_ring"
path = "benches/bench_extended_chordal_ring.rs"
harness = false
[[bench]]
name = "bench_adjacency"
path = "benches/bench_adjacency.rs"
harness = false
[[bench]]
name = "bench_weighted_adjacency"
path = "benches/bench_weighted_adjacency.rs"
harness = false
[[bench]]
name = "bench_linegraph"
path = "benches/bench_linegraph.rs"
harness = false
[[bench]]
name = "bench_prufer"
path = "benches/bench_prufer.rs"
harness = false
[[bench]]
name = "bench_tree_from_parent_vector"
path = "benches/bench_tree_from_parent_vector.rs"
harness = false
[[bench]]
name = "bench_lcf"
path = "benches/bench_lcf.rs"
harness = false
[[bench]]
name = "bench_mycielskian"
path = "benches/bench_mycielskian.rs"
harness = false
[[bench]]
name = "bench_famous"
path = "benches/bench_famous.rs"
harness = false
[[bench]]
name = "bench_atlas"
path = "benches/bench_atlas.rs"
harness = false
[[bench]]
name = "bench_create"
path = "benches/bench_create.rs"
harness = false
[[bench]]
name = "bench_constraint"
path = "benches/bench_constraint.rs"
harness = false
[[bench]]
name = "bench_simple_paths"
path = "benches/bench_simple_paths.rs"
harness = false
[[bench]]
name = "bench_layout_simple"
path = "benches/bench_layout_simple.rs"
harness = false
[[bench]]
name = "bench_centralization"
path = "benches/bench_centralization.rs"
harness = false
[[bench]]
name = "bench_graphicality"
path = "benches/bench_graphicality.rs"
harness = false
[[bench]]
name = "bench_strength"
path = "benches/bench_strength.rs"
harness = false
[[bench]]
name = "bench_trussness"
path = "benches/bench_trussness.rs"
harness = false
[[bench]]
name = "bench_vf2"
path = "benches/bench_vf2.rs"
harness = false
[[bench]]
name = "bench_subiso"
path = "benches/bench_subiso.rs"
harness = false
[[bench]]
name = "bench_cohesive_blocks"
path = "benches/bench_cohesive_blocks.rs"
harness = false
[[bench]]
name = "bench_canonical"
path = "benches/bench_canonical.rs"
harness = false
[[bench]]
name = "bench_lad"
path = "benches/bench_lad.rs"
harness = false
[[bench]]
name = "bench_perfect"
path = "benches/bench_perfect.rs"
harness = false
[[bench]]
name = "bench_power_law_fit"
path = "benches/bench_power_law_fit.rs"
harness = false
[[bench]]
name = "bench_dim_select"
path = "benches/bench_dim_select.rs"
harness = false
[[bench]]
name = "bench_gabriel_graph"
path = "benches/bench_gabriel_graph.rs"
harness = false
[[bench]]
name = "bench_relative_neighborhood_graph"
path = "benches/bench_relative_neighborhood_graph.rs"
harness = false
[[bench]]
name = "bench_nearest_neighbor_graph"
path = "benches/bench_nearest_neighbor_graph.rs"
harness = false
[[bench]]
name = "bench_lune_beta_skeleton"
path = "benches/bench_lune_beta_skeleton.rs"
harness = false
[[bench]]
name = "bench_circle_beta_skeleton"
path = "benches/bench_circle_beta_skeleton.rs"
harness = false
[[bench]]
name = "bench_beta_weighted_gabriel_graph"
path = "benches/bench_beta_weighted_gabriel_graph.rs"
harness = false
[[bench]]
name = "bench_delaunay"
path = "benches/bench_delaunay.rs"
harness = false
[[bench]]
name = "bench_assortativity_values"
path = "benches/bench_assortativity_values.rs"
harness = false
[[bench]]
name = "bench_graphlets"
path = "benches/bench_graphlets.rs"
harness = false
[[bench]]
name = "bench_astar"
path = "benches/bench_astar.rs"
harness = false
[[bench]]
name = "bench_all_sp_dijkstra"
path = "benches/bench_all_sp_dijkstra.rs"
harness = false
[[bench]]
name = "bench_sp_dijkstra"
path = "benches/bench_sp_dijkstra.rs"
harness = false
[[bench]]
name = "bench_drl_3d"
path = "benches/bench_drl_3d.rs"
harness = false
[lints.rust]
unsafe_code = "deny"
[lints.clippy]
all = { level = "warn", priority = -1 }
pedantic = { level = "warn", priority = -1 }
module_name_repetitions = "allow"
must_use_candidate = "allow"
missing_errors_doc = "allow"
missing_panics_doc = "allow"
large_stack_arrays = "allow"
[profile.release]
lto = "thin"
codegen-units = 1